嗨,我遇到了这段代码,但无法理解。令人困惑的地方是“V <: Vector[V]”,这意味着 V 是 Vector[V] 的子类型?这里非常混乱。
trait Vector[V <: Vector[V]] { this: V =>
def +(other: V): V
}
嗨,我遇到了这段代码,但无法理解。令人困惑的地方是“V <: Vector[V]”,这意味着 V 是 Vector[V] 的子类型?这里非常混乱。
trait Vector[V <: Vector[V]] { this: V =>
def +(other: V): V
}
它被称为F 有界类型多态性和
当有人试图解决面向对象语言中的一个常见抽象问题时,通常会尝试:如何定义一个多态函数,尽管它是根据超类型定义的,但当传递某个子类型的值时,它总是返回一个值与其参数相同的子类型。
(摘自Kris Nuttycombe最近的一篇博文“ F-Bounded Type Polymorphism Considered Tricky ” )
另请参阅这个 SO 问题:泛型中的“递归类型绑定”是什么意思?