在Scala中V<:Vector [V]是什么意思?

时间:2012-12-25 01:21:18

标签: scala

您好我遇到了这段代码,但无法理解这一点。令人困惑的地方是“V&lt ;: Vector [V]”,这意味着V是Vector [V]的子类型?这里很混乱。

trait Vector[V <: Vector[V]] { this: V =>
  def +(other: V): V
}

1 个答案:

答案 0 :(得分:6)

它被称为F-bounded type polymorphism

  当有人试图解决一个常见问题时,通常会尝试

  面向对象语言中的抽象:如何定义一个   多态函数,虽然根据超类型定义,   将传递某个子类型的值时将始终返回值   与其参数相同的子类型。

(来自最近的博客文章“F-Bounded Type Polymorphism Considered TrickyKris Nuttycombe

另见这个问题:What does "Recursive type bound" in Generics mean?