Ich weiß über einige ähnliche Fragen. Sie helfen mir nicht - Code funktioniert nicht, wenn kein Schlüssel vorhanden ist.Schöne Möglichkeit, Nummer zu Element in Scala Karte hinzufügen, wenn der Schlüssel existiert oder ein neues Element einfügen es nicht
Ich brauche nur einen netten Ansatz, um Map mit Wert hinzuzufügen, den bestehenden Schlüssel (falls vorhanden) hinzuzufügen oder als NEUEN Schlüssel zu setzen (wenn die Karte keinen passenden Schlüssel enthält).
Code funktioniert Nach aber ich mag es nicht:
val a = collection.mutable.Map(("k1" -> 1), ("k2" -> 5))
val key = "k1"
val elem = a.get(key)
if (elem == None) {
a += ("k5" -> 200)
} else {
a.update(key, elem.get + 5)
}
Jeder Punkt auf bessere? Aktuelle Scala-Version ist 2.10.4 und ich kann derzeit nicht auf 2.11 wechseln. Veränderbare Map ist keine 100% Beschränkung, wird aber bevorzugt.
Hier ist zum Beispiel similar question, aber ich muss auch den Fall eines nicht vorhandenen Schlüssels berücksichtigen, der dort nicht berücksichtigt wird. Zumindest sollten wir verstehen, a.get(key)
könnte None
sein oder einen besseren Ansatz hinzufügen. Gute Idee war |+|
, aber ich möchte grundlegende Scala 2.10.x behalten.
Wahrscheinlich für jetzt ist es die beste Option. Aber WARUM Scala anspruchsvolle Container-Bibliothek kann nicht so einfach aus der Box bieten - mit Schlüssel und Wert entweder Wert hinzufügen (wenn kein Schlüssel existiert) oder etwas mit sowohl aktuellen Wert und meine eine? Das nächste Mal wird dies definitiv zumindest in die Unternehmensbibliothek (Teufel) aufgenommen. –
Das ist sehr seltsam IMHO: Hinzufügen eines Schlüssels, wenn ein ** anderes ** ist nicht vorhanden ist nicht wirklich ein Mainstream-Verhalten –
Warum? Zum Beispiel möchte ich die Aggregation nach Schlüssel als Map erstellen und ich muss Elemente einzeln hinzufügen, so dass Dinge wie 'reduce()' nicht verwendet werden können? –