Ich habe mit einem unveränderlichen Objekt in scala 2.7.5 zu tun, und eines seiner Mitglieder ist ein immutable Sortedset. ich kein Problem mit dem Zusatz haben, zu synthetisieren, es gibt:Scala unveränderlich SortedSet sind nicht "stabil" beim Löschen
class MyClass[A](s:SortedSet[A]) {
...
def + (elem:A):MyClass[A] {
new MyClass(s + elem)
}
}
Und es funktioniert, da + Betreiber Überlastung Merkmal SortedSet ist ein SortedSet zurückzukehren.
Leider ein Element zu entfernen nicht da - methos nicht überlastet ist:
class MyClass[A](s:SortedSet[A]) {
...
def - (elem:A):MyClass[A] {
new MyClass(s - elem) // Compiler error: (s - elem) is a Set[A]
}
}
Hat jemand weiß, wie ich einen sortierte Satz erhalten kann, wenn ich ein Element unterdrücken zu wissen, dass: - ich will nicht verwenden, eine spezifischere Art von Set wie TreeSet. - Ich kann ein weniger spezifisches Merkmal als Set [A] anstelle meines SortedSet verwenden.
Wie ich die SortedMap API überprüft habe und ... es tut es richtig ("-" gibt eine SortedMap zurück). Es muss eine Erklärung geben, Bonusfrage? – Nicolas
Die Sammlungsbibliothek von Scala 2.7.x ist ad-hoc. Es wuchs mit der Zeit und dem Gebrauch, bis es so wurde, wie es ist. Das Entfernen dieser Art von Inkonsistenz ist ein Ziel hinter der neuen Sammlungsbibliothek von Scala 2.8. –