4
通過在Ordered中混合並提供compare()函數,對象排序非常簡單,如here所示。但是如果你的排序值是Double而不是Int?基於Double值對對象進行排序?
def compare(that: MyClass) = this.x - that.x
其中x是雙會導致編譯器錯誤:「類型不匹配;發現:雙要求:內部」
是否有使用雙打的比較,而不是鑄造到整數的一種方式?
通過在Ordered中混合並提供compare()函數,對象排序非常簡單,如here所示。但是如果你的排序值是Double而不是Int?基於Double值對對象進行排序?
def compare(that: MyClass) = this.x - that.x
其中x是雙會導致編譯器錯誤:「類型不匹配;發現:雙要求:內部」
是否有使用雙打的比較,而不是鑄造到整數的一種方式?
最簡單的方法是委託給compare
實施RichDouble
(到您的Double
將被隱式轉換):
def compare(that : MyClass) = x.compare(that.x)
這種方法的優點是它的工作方式相同的所有基本類型。
這個習語在整數類型中也被破壞,因爲它會在溢出時產生錯誤的結果。 – starblue 2009-08-04 19:37:40