gpt4 book ai didi

scala f 有界类型解释

转载 作者:行者123 更新时间:2023-12-04 12:06:58 24 4
gpt4 key购买 nike

看了几个例子后,我不得不说,我无法理解F-Bounded多态带来了什么。

使用 Scala 学校的示例 ( https://twitter.github.io/scala_school/advanced-types.html#fbounded )

他们解释说他们需要一些 F-Bounded 类型,以便子类可以返回子类型。
所以他们做这样的事情:

trait Container[A <: Container[A]] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(that: MyContainer) = 0
}

但是当你可以使用这样的东西时,我不明白使用这种类型有什么好处:
trait Container[A] extends Ordered[A]
class MyContainer extends Container[MyContainer] {
def compare(other: MyContainer) = 0
}

任何解释都非常受欢迎

谢谢

最佳答案

当它看起来像这样时,优势就会出现:

trait Container[A <: Container[A]] extends Ordered[A] {
def clone: A
def pair: (A, A) = (clone, clone)
}

class MyContainer extends Container[MyContainer] {
def clone = new MyContainer
}

现在你得到 pair免费,您将获得正确的返回类型。如果没有这样的东西,您必须手动覆盖每个返回相同类型的方法(许多毫无意义的样板文件),否则一旦调用非覆盖方法,您的类型就会失去特异性。

关于scala f 有界类型解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29339548/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com