问题标签 [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.

0 投票
2 回答
329 浏览

java - 有没有办法在 Java 中返回多态 this ?

在 Typescript 中,有一个多态返回类型的概念thishttps://www.typescriptlang.org/docs/handbook/advanced-types.html#polymorphic-this-types 示例:

Java中有什么等价的吗?我想出的最好的是:

或这个:

第一个似乎只能被子类化一次。
第二个在某些情况下需要显式类型参数。
有没有办法在 Java 中返回多态 this ?

0 投票
1 回答
146 浏览

scala - Scala 类型和 F 有界类型

我正在学习 Scala 中的 F 绑定类型,并且遇到了一种我不知道出了什么问题的情况。

我做了三个测试,代码如下:

test1工作正常。test2 和 test3 产生编译时错误。

test2中,我省略了这ThisTypeAbstract. 我知道如果我不设置这个上限,ThisType可以是任何东西。但是如果我有一个SetofAbstract并且我执行了一个deepCopy()它的元素,它不会是同一类型吗?编译器产生此错误:

我不明白为什么在这种情况下 (test2)与 test1 中Abstract#ThisType的类型不同。Abstract它与路径相关类型有关吗?如果是这样,解释是什么?

test3中,我尝试执行与 test1 中相同的操作,但使用类型参数,此编译器在行中抛出错误val set2: mutable.Set[Abstract[_]] = set.map(_.deepCopy())

这与通配符有关,但我不知道如何声明没有通配符的此类类型。

0 投票
2 回答
125 浏览

scala - F 有界类型和在参数和返回位置具有类型参数的方法

我有一个 F 有界类型,我的目标是创建一个类型参数化的方法以便能够重用它。这是示例代码:

但是,代码无法编译。编译器抛出此错误:

我知道它与路径相关类型有关,因为_type.ThisType它与T.

但是,如果 F 有界类型与使用 F 有界类型的类型不完全相同,我该如何利用 F 有界类型呢?如果类型不完全相同,那是如何deepCopy2编译的?

注意:我知道我可以deepCopy通过对每个具体类型使用方法重载来避免使用类型参数。

0 投票
1 回答
181 浏览

scala - 为什么scala编译器说类型参数不符合界限?

我用子类 Complex 和 IntCombiner 创建了 Combiner 特征,我的目标是让 Matrix 与 Complex 和 Int 一起工作。但是由于某种原因它没有编译说

但据我了解,IntContainer 是 Combiner 的子类,它应该可以工作。为什么会出现这样的错误请解释?

0 投票
2 回答
58 浏览

scala - F绑定多态对象的集合

假设我有一个 F 有界多态性状:

如果我有一个可以是任何实例的集合,我该如何使用它?

0 投票
1 回答
73 浏览

scala - 这个语法在 scala [H <: Service[H]] 中意味着什么

我正在研究一个特征然后我发现了我不理解的这种语法

我想这可能是一个通用声明,但仍然对这个 scala 语法感到困惑Holder[H <: service.SealedHolder[H]]

0 投票
1 回答
77 浏览

scala - 为什么我们可以在 Scala 中使用新类作为父类的类型?

在 RedBook 中 Actor 的简化实现中,他们为 Actor 使用基于节点的 MPSC 基于节点的队列。他们通过这行代码定义节点:

但是我们怎么能用Node[A]作为类型参数呢,AtomicReference因为我们还没有class Node[A]呢?它是在 Scala 中声明递归类型的一种方式吗?

0 投票
2 回答
295 浏览

scala - Scala 泛型类型扩展了 Comparable 接口

以下 scala 代码可以正常工作:

但下一个编译错误:

错误:类型参数 [B] 不符合类 C 的类型参数界限 [T <: Comparable[T]]

实际上 B 类也有一个 compareTo 成员。如何更改 C 类的定义以使其与 B 类兼容?谢谢!

0 投票
1 回答
46 浏览

scala - Scala,F-Bounded多态性未按预期工作

我有以下与 IpAddresses 相关的类。我以这种方式定义 IpAddress 是因为我想强制 IpAddress 的每个子类型只能与自身进行比较。意思是,将 Ipv4 与 Ipv6 进行比较是没有意义的

现在我正在尝试在不同的上下文中使用 IpAddress,如下所示:

但由于某种原因,我不能在这里使用 IpAddress。

我收到此错误:

有人对此有任何想法吗?

0 投票
1 回答
132 浏览

scala - 如何让特征在scala中使用`this`构造函数?

[编辑更新] 这是对我的问题的正确陈述。

我希望在 a 中调用构造函数trait。但似乎我必须使用apply功能。它是否存在像 new this() 这样的用法?

就像下面的代码。它抛出类型不匹配。我希望添加构造函数的约束,或者我必须使用apply函数。