2009-08-04 14 views
4

オブジェクトを並べ替えるには、Orderedで混合し、hereのようにcompare()関数を用意すれば十分です。しかし、ソート値がIntではなくDoubleであればどうでしょうか? xはダブルコンパイルエラーにつながるされDouble値に基づいてオブジェクトをソートする?

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

:「型が一致し、見つかった:ダブルは必要:のInt」を

は、代わりにint型にキャストするの比較のためにダブルスを使用する方法はありますか?

+1

このイディオムは、オーバーフロー時に間違った結果を生成するので、整数型の場合も壊れています。 – starblue

答えて

8

最も簡単な方法は、(これにあなたのDoubleが暗黙的に変換されます)RichDoublecompare実装に委任することです:

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

このアプローチの利点は、それがすべてのプリミティブ型のために同じように動作することです。

関連する問題