Как преобразовать класс, реализующий java.lang.Comparable, чтобы реализовать Scala.Ordered? - PullRequest
4 голосов
/ 23 декабря 2010

Достаточно ли переименования extends Comparable[A] в extends Ordered[A] и переименования def compareTo в def compare или есть что-то, о чем я должен позаботиться?

1 Ответ

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

Вы правы, это все, что вам нужно сделать. Другие методы в Ordered будут использовать свои реализации по умолчанию, которые идут следующим образом:

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)

Единственное, что не имеет реализации по умолчанию в Ordered, - это сравнение, которое вы будете определять, используя старый метод compareTo. Должно работать, при условии, что вышесказанное - то, что вы хотите для других сравнений.

...