2012-12-25 85 views
4

嗨我碰到這段代碼,但無法理解這一點。令人困惑的地方是「V <:Vector [V]」,這意味着V是Vector [V]的子類型?這裏很混亂。V <:Vector [V]在scala中的含義是什麼?

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

回答

6

這就是所謂的F-bounded type polymorphism

通常嘗試當有人試圖解決一個共同的問題 在面嚮對象語言的抽象:如何定義,雖然在定義一個 多態函數超類的條款, 將傳遞一些子類型的值將始終返回值爲 相同的子類型作爲其參數。

(從最近的一篇博客 「F-Bounded Type Polymorphism Considered Tricky」 由Kris Nuttycombe

也看到這個問題的SO:What does "Recursive type bound" in Generics mean?

相關問題