2016-06-09 45 views
0
implicit class OrderableFoo[T<:Foo[A,_] forSome {type A <: Ordered[A]}](thisFoo:Foo) 
extends Ordered[Foo]{ 
override def compare(other:Foo):Int = thisFoo.value.compare(other.value) 
} 

我的問題:不確定錯誤Scala中定義自定義有序類型時

thisFoo.value返回類型的值的

A型是有序

thisFoo.value.compare是期望類型的參數甲

other.value是類型A

thisFo的o.value.compare(other.value)不會編譯。 「預期的A,但收到訂購[A]」

回答

0

原來,當使用forSome {type}功能時,thisFoo的A與其他的A不同。我們所知的全部是A都是可訂購的。這可以通過提供其他類型參數來解決。