Ich habe eine EigenschaftWie richtig bestellt zu implementieren
trait Weight {
def getWeight: Int
}
Mehrere Klassen erbt es, Beispiel:
case class Test(n: Int) extends Weight {
override def getWeight: Int = n
}
Jetzt möchte ich alle Weight
Subklassen Sortier Fähigkeit hinzuzufügen. Ich fügte hinzu, Ordered
-Weight
:
trait Weight extends Ordered[Weight] {
def getWeight: Int
override def compare(that: Weight): Int = this.getWeight.compareTo(that.getWeight)
}
Versuchen Sortierung:
val seq = Seq(Test(1), Test(4), Test(3), Test(2))
seq.sorted // error
Und es ist nicht compiliert:
Error:(74, 6) diverging implicit expansion for type scala.math.Ordering[A$A254.this.Test] starting with method $conforms in object Predef seq.sorted;} ^
Was mache ich falsch?
Ich denke Problem über „dieses“ in Zug Gewicht ist. auf Eigenschaft kann man nicht "this" verwenden, weil man keine Eigenschaft instanziieren kann –
Ich denke nein, weil nur "sortierte", die implizit Ordering verwendet, einen Fehler auslöst. – zella
dass, weil ich denke, ist das erste Mal auf Ihrem Code, wo Sie "vergleichen" -Methode - Aber ich könnte schrecklich falsch –