为什么Ordered [A]使用比较方法而不是重用compareTo?

时间:2010-12-23 18:14:01

标签: java scala programming-languages interop comparison

trait Ordered[A] extends java.lang.Comparable[A] {
  def compare(that: A): Int
  def <  (that: A): Boolean = (this compare that) <  0
  def >  (that: A): Boolean = (this compare that) >  0
  def <= (that: A): Boolean = (this compare that) <= 0
  def >= (that: A): Boolean = (this compare that) >= 0
  def compareTo(that: A): Int = compare(that)
}

同时拥有comparecompareTo是否有点无用? 我在这里失踪的巨大好处是什么?

如果他们刚刚使用compareTo,我可以在代码中将Comparable替换为Ordered并完成。

2 个答案:

答案 0 :(得分:10)

我认为这是一次历史性事故。 Ordered最初未继承自Comparable。完成后,compare名称已经建立。

答案 1 :(得分:1)

我认为Scala库的作者更喜欢名称compare()。