7 Stimmen

Warum scala's TreeSet ein SortedSet zurückgibt

Gibt es einen Grund dafür, dass das Objekt TreeSet.apply Methode gibt zurück SortedSet und nicht TreeSet ?

Der folgende Code lässt sich in Scala 2.7 nicht kompilieren

val t:TreeSet[Int] = TreeSet(1,2,3)

5voto

Kristian Domagala Punkte 3648

Die wörtliche Antwort lautet: weil apply() es implementiert in Bezug auf ++ die definiert ist in SortedSet und liefert daher eine SortedSet . ++ dann weiter zu verwenden + die ist definiert in TreeSet so können Sie es zurückwerfen nach TreeSet wenn es kritisch ist (obwohl ich das nicht empfehlen würde, da es von der Implementierung abhängt und sich im Laufe der Zeit ändern kann!).

Was brauchen Sie von TreeSet, das Sie nicht von SortedSet bekommen können?

Ich bin mir nicht sicher, was der Grund für diese Entscheidung ist, aber es sieht so aus, als hätte sich das in 2.8 geändert.

5voto

AaronDefazio Punkte 257

Dies wurde als ein Manko der aktuellen scala collection library identifiziert und wird in der überarbeiteten collection library, die Teil von scala 2.8 ist, behoben. Siehe http://www.scala-lang.org/sid/3# für die blutigen Details.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X