问题标签 [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.
c++ - “奇怪重复的模板模式”的实际用途
“奇怪重复的模板模式”有哪些实际用途?通常显示的“计数类”示例对我来说并不是一个令人信服的示例。
c++ - 另一个奇怪的重复模板模式
问题很简单,如何让上面的代码编译?目的是让 Node 有可能分配其他节点(并提供默认分配器)。
c++ - 奇怪的重复模板?
我有一个问题,奇怪的是重复出现的模板可以很好地提供帮助,但我什至无法通过一个简单的测试。
这会导致错误
我错过了什么。
用 g++ 4.2.1 编译
c++ - 导出奇怪的重复模板和协方差
假设我有一个克隆派生类的基类:
我有一组派生类,它们使用奇怪的重复模板模式实现:
我试图从中进一步得出这样的结论:
我收到编译错误,效果如下:
我意识到这可能是编译器在实例化 CRTP 时不完全了解 Derived 的继承树的结果。此外,将返回类型 (T*) 替换为 (Base*) 也可以编译。但是,我想知道是否有一种保留上述语义的解决方法。
scala - 尝试将 F 有界多态性建模为 Scala 中的类型成员
我想尝试编写一种类型,其方法可以是同质的并返回相同类型的值:
不幸的是,注释掉的行调用tester
失败并出现以下错误(Scala 2.10):
X
基本上,我对为什么Y
不统一到感到困惑Foo
,这对于他们两个来说似乎是一个明确的 LUB。显然,类型成员使事情复杂化,但它的界限似乎得到了尊重。
在更高的层次上,我正在寻找一种轻量级的方法来获得等效的 F 有界多态性,而无需普遍类型参数的开销。这似乎最有效,但我需要添加强制X
并Y
统一到Foo
.
scala - 将 F 有界类型表示为抽象类型成员
我想将 F 有界多态性转换为抽象类型成员。
至
到目前为止,一切都很好。
让我们定义一个实例:
并尝试使用它:
F 有界版本工作正常。
def moveF[A <: FBoundedMovable[A]](a: A, to: Vect2): A = a.moveTo(to)
我知道可以将类型边界添加到方法定义站点:
def move2[A <: Movable { type Self = A }](a: A, to: Vect2): A = a.moveTo(to)
但是是否可以在 Movable 特征声明中指定关系?如果不是 - 为什么?
编辑 1
我已经意识到我遇到了什么问题。
假设我们要声明某物是我们世界中的一个单位。
trait WorldUnit extends Movable with Damageable
所有单元都是可移动和可损坏的。
我们战斗计算的东西只关心那个东西Movable with Damagable
。它不关心它是单元还是建筑物。
但是我们可以有这样的代码:
我注定要使用 F 有界类型吗?
编辑2:
Attempting to model F-bounded polymorphism as a type member in Scala没有回答这个问题——我之前已经尝试过,它丝毫不会影响返回类型,它仍然是 a.Self。
编辑3:
我找到了http://blog.jessitron.com/2014/02/when-oo-and-fp-meet-mytype-problem.html但问题仍未解决。
基本上,每当您有收藏并想挑选一个时:
(collection: Seq[Movable]).collectFirst { m: Movable if m.someCondition => m }
- 您无法指定类型绑定,因此编译器无法证明 A#Self =:= A?
scala - scala f 有界类型解释
看了几个例子后,我不得不说,我没看懂 F-Bounded 多态带来了什么。
使用 scala 学校的示例 ( https://twitter.github.io/scala_school/advanced-types.html#fbounded )
他们解释说他们需要一些 F-Bounded 类型,以便子类可以返回子类型。所以他们做了这样的事情:
但是当你可以使用这样的东西时,我看不出使用这种类型有什么好处:
任何解释都非常受欢迎
谢谢
scala - 对象上的 Scala F 有界多态性
我无法在 Scala 中编写以下 F 有界多态性。为什么?
我如何表达这一点并使其编译?
java - 为什么使用 F-Bounded Type 在现有类型层次结构中添加新方法
我正在阅读以下有关使用 Java 泛型解决表达式问题的论文。
http://www.daimi.au.dk/~madst/ecoop04/main.pdf
作者提出了第一个解决方案,使用 F-Bounded 类型来确保左右参数是 EvalExp 类型。
我试图在不使用 F-Bounded 类型的情况下解决问题,并最终得到以下似乎有效的代码
此解决方案是否解决了表达式问题(是否可以扩展新数据和操作)?
是否满足代码级别的可扩展性(有关详细信息,请参阅论文)。
上述解决方案是否比论文中提出的 F-Bounded 解决方案有任何缺点?
欢迎任何解释。
编辑:更新了代码以修复编译问题。
scala - 对具有 F 有界类型的集合的函数应用
我一直在尝试学习更多 Scala 并遇到了这篇讨论 F 有界类型的有趣文章。我对关于使用此类类型的值集合的最终讨论特别感兴趣。
一个简单的例子如下:
如博客文章所示,我们可以使用存在量词来允许我们me2
调用C1
和C2
现在,我一直在尝试对列表类型进行几种变体,我希望有更多经验的人能指出我遗漏的一些细微之处。
以下工作符合我的预期
我也可以调用_.me
并将列表表示为包含 的实例AbsClass[A] forSome {type A}
,如
但是当我尝试再次应用相同的地图l
时,我会丢失类型信息并卡在List[Any]
. 有没有办法在这里维护类型?