2009-08-04 106 views
4

通過在Ordered中混合並提供compare()函數,對象排序非常簡單,如here所示。但是如果你的排序值是Double而不是Int?基於Double值對對象進行排序?

def compare(that: MyClass) = this.x - that.x

其中x是雙會導致編譯器錯誤:「類型不匹配;發現:雙要求:內部」

是否有使用雙打的比較,而不是鑄造到整數的一種方式?

+1

這個習語在整數類型中也被破壞,因爲它會在溢出時產生錯誤的結果。 – starblue 2009-08-04 19:37:40

回答

8

最簡單的方法是委託給compare實施RichDouble(到您的Double將被隱式轉換):

def compare(that : MyClass) = x.compare(that.x) 

這種方法的優點是它的工作方式相同的所有基本類型。

相關問題