Почему Ordered [A] использует метод сравнения вместо повторного использования CompareTo? - PullRequest
2 голосов
/ 23 декабря 2010
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)
}

Разве не бесполезно иметь и compare, и compareTo? Какая огромная выгода мне здесь не хватает?

Если бы они только что использовали compareTo, я мог бы просто заменить Comparable на Ordered в моем коде, и все будет готово.

Ответы [ 2 ]

10 голосов
/ 24 декабря 2010

Я думаю, это историческая случайность.Ordered изначально не наследуется от Comparable.После этого имя compare уже было установлено.

1 голос
/ 23 декабря 2010

Я предполагаю, что авторы библиотек Scala просто предпочитают имя сравнения ().

...