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)
}
Ist es nicht ein wenig nutzlos, beide compare
und compareTo
zu haben? Was ist der große Vorteil, der mir hier fehlt?Warum verwendet Ordered [A] eine Vergleichsmethode, anstatt compareTo erneut zu verwenden?
Wenn sie gerade compareTo
verwendet hätten, hätte ich gerade Comparable
durch Ordered
in meinem Code ersetzen können und fertig sein.
Ist vorbestellt vergleichbar bestellt? Das ist seltsam, aber mindestens eine Implementierung ruft die andere auf. –
Nomenklatur. Es ist nur Scalas Art, sich von großem Java zu unterscheiden. –