基于Double值对对象进行排序?

问题描述:

通过在Ordered中混合并提供compare()函数,对象排序非常简单,如here所示。但是如果你的排序值是Double而不是Int?基于Double值对对象进行排序?

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

其中x是双会导致编译器错误:“类型不匹配;发现:双要求:内部”

是否有使用双打的比较,而不是铸造到整数的一种方式?

+1

这个习语在整数类型中也被破坏,因为它会在溢出时产生错误的结果。 – starblue 2009-08-04 19:37:40

最简单的方法是委托给compare实施RichDouble(到您的Double将被隐式转换):

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

这种方法的优点是它的工作方式相同的所有基本类型。