斯卡拉文檔說Enumeration.Val是有序的,但我得到不一致的行爲的時候,當我試圖強制執行枚舉值類型限制,要求他們支持排序:未定購Scala枚舉值?
object Dogs extends Enumeration {
val Sam, Tom, Rover = Value
}
def doSomething[A <% Ordered[A]](a : List[A]) : Unit = {
println(a.sortWith(_ < _))
}
import Dogs._
val xs = List(Rover, Tom, Sam, Sam, Rover)
println(xs.sortWith(_ < _)) // works!
doSomething(xs) // fails =(
最後兩條語句,第一工作並顯示Enumeration值具有已定義的順序。第二個給出錯誤:
could not find implicit value for evidence parameter of type (this.Dogs.Value) => Ordered[this.Dogs.Value]
如何解決此問題並在需要排序的泛型方法中使用枚舉值?
謝謝@retronym,這最後一個例子解決了我的問題,雖然我的思想是從較弱的類型限制彎曲! 現在需要任何類型A,只要A可以被當作(即,或可以被轉換成)某種東西。 – 2010-03-02 22:30:24