您好我遇到了这段代码,但无法理解这一点。令人困惑的地方是“V&lt ;: Vector [V]”,这意味着V是Vector [V]的子类型?这里很混乱。
trait Vector[V <: Vector[V]] { this: V =>
def +(other: V): V
}
答案 0 :(得分:6)
它被称为F-bounded type polymorphism和
当有人试图解决一个常见问题时,通常会尝试面向对象语言中的抽象:如何定义一个 多态函数,虽然根据超类型定义, 将传递某个子类型的值时将始终返回值 与其参数相同的子类型。
(来自最近的博客文章“F-Bounded Type Polymorphism Considered Tricky”Kris Nuttycombe)