问题标签 [f-bounded-polymorphism]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 有没有办法在 Java 中返回多态 this ?
在 Typescript 中,有一个多态返回类型的概念this
。
https://www.typescriptlang.org/docs/handbook/advanced-types.html#polymorphic-this-types
示例:
Java中有什么等价的吗?我想出的最好的是:
或这个:
第一个似乎只能被子类化一次。
第二个在某些情况下需要显式类型参数。
有没有办法在 Java 中返回多态 this ?
scala - Scala 类型和 F 有界类型
我正在学习 Scala 中的 F 绑定类型,并且遇到了一种我不知道出了什么问题的情况。
我做了三个测试,代码如下:
test1工作正常。test2 和 test3 产生编译时错误。
在test2中,我省略了这ThisType
是Abstract
. 我知道如果我不设置这个上限,ThisType
可以是任何东西。但是如果我有一个Set
ofAbstract
并且我执行了一个deepCopy()
它的元素,它不会是同一类型吗?编译器产生此错误:
我不明白为什么在这种情况下 (test2)与 test1 中Abstract#ThisType
的类型不同。Abstract
它与路径相关类型有关吗?如果是这样,解释是什么?
在test3中,我尝试执行与 test1 中相同的操作,但使用类型参数,此编译器在行中抛出错误val set2: mutable.Set[Abstract[_]] = set.map(_.deepCopy())
:
这与通配符有关,但我不知道如何声明没有通配符的此类类型。
scala - F 有界类型和在参数和返回位置具有类型参数的方法
我有一个 F 有界类型,我的目标是创建一个类型参数化的方法以便能够重用它。这是示例代码:
但是,代码无法编译。编译器抛出此错误:
我知道它与路径相关类型有关,因为_type.ThisType
它与T
.
但是,如果 F 有界类型与使用 F 有界类型的类型不完全相同,我该如何利用 F 有界类型呢?如果类型不完全相同,那是如何deepCopy2
编译的?
注意:我知道我可以deepCopy
通过对每个具体类型使用方法重载来避免使用类型参数。
scala - 为什么scala编译器说类型参数不符合界限?
我用子类 Complex 和 IntCombiner 创建了 Combiner 特征,我的目标是让 Matrix 与 Complex 和 Int 一起工作。但是由于某种原因它没有编译说
但据我了解,IntContainer 是 Combiner 的子类,它应该可以工作。为什么会出现这样的错误请解释?
scala - F绑定多态对象的集合
假设我有一个 F 有界多态性状:
如果我有一个可以是任何实例的集合,我该如何使用它?
scala - 这个语法在 scala [H <: Service[H]] 中意味着什么
我正在研究一个特征然后我发现了我不理解的这种语法
我想这可能是一个通用声明,但仍然对这个 scala 语法感到困惑Holder[H <: service.SealedHolder[H]]
scala - 为什么我们可以在 Scala 中使用新类作为父类的类型?
在 RedBook 中 Actor 的简化实现中,他们为 Actor 使用基于节点的 MPSC 基于节点的队列。他们通过这行代码定义节点:
但是我们怎么能用Node[A]
作为类型参数呢,AtomicReference
因为我们还没有class Node[A]
呢?它是在 Scala 中声明递归类型的一种方式吗?
scala - Scala 泛型类型扩展了 Comparable 接口
以下 scala 代码可以正常工作:
但下一个编译错误:
错误:类型参数 [B] 不符合类 C 的类型参数界限 [T <: Comparable[T]]
实际上 B 类也有一个 compareTo 成员。如何更改 C 类的定义以使其与 B 类兼容?谢谢!
scala - Scala,F-Bounded多态性未按预期工作
我有以下与 IpAddresses 相关的类。我以这种方式定义 IpAddress 是因为我想强制 IpAddress 的每个子类型只能与自身进行比较。意思是,将 Ipv4 与 Ipv6 进行比较是没有意义的
现在我正在尝试在不同的上下文中使用 IpAddress,如下所示:
但由于某种原因,我不能在这里使用 IpAddress。
我收到此错误:
有人对此有任何想法吗?
scala - 如何让特征在scala中使用`this`构造函数?
[编辑更新] 这是对我的问题的正确陈述。
我希望在 a 中调用构造函数trait
。但似乎我必须使用apply
功能。它是否存在像 new this() 这样的用法?
就像下面的代码。它抛出类型不匹配。我希望添加构造函数的约束,或者我必须使用apply
函数。