2009-08-04 10 views
4

Das Sortieren von Objekten ist einfach genug, indem Sie in Ordered mixen und eine compare() -Funktion bereitstellen, wie gezeigt here. Aber was, wenn Ihr Sortierwert ein Double statt eines Int ist?Objekte basierend auf Double-Werten sortieren?

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

wo x eine Doppel zu einem Compiler-Fehlern führen wird: „Typenkonflikt, gefunden: Doppel erforderlich: Int“

Gibt es eine Möglichkeit Double für den Vergleich zu verwenden, anstatt zu Ints Gießen?

+1

Dieses Idiom ist auch bei Integer-Typen fehlerhaft, da es beim Überlauf zu falschen Ergebnissen führt. – starblue

Antwort

8

Der einfachste Weg ist, um compare Implementierung von RichDouble zu delegieren (an dem Ihr Double implizit umgewandelt werden):

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

Der Vorteil dieses Ansatzes ist, dass es die gleiche Art und Weise für alle primitiven Typen funktioniert.

Verwandte Themen