Frage

Ich arbeite mit einer Karte in der Scala und die üblichen tun „wenn kein Wert ist mit einem Schlüssel zugeordnet ist, erstellen Sie es, sie in der Karte setzen und senden Sie es“:

def alphaMemory(key : AlphaMemoryKey) = {
    var am = map.getOrElse(key, null)
    if(am == null) {
        am = new AlphaMemory(key)
        map.put(key, am)
    }
    am
}

Für mich ist diese fühlt sich nicht wie idiomatische Code Scala. Es fühlt sich an wie Java. Gibt es eine prägnante Art und Weise, dies zu schreiben? Es sah aus wie vielleicht könnte ich Map.default () außer Kraft setzt den neuen Wert zu setzen und sie zurückbringen. Nicht sicher, though.

Danke!

War es hilfreich?

Lösung

mutable.Map hat < a href = "http://www.scala-lang.org/api/current/scala/collection/mutable/Map.html#getOrElseUpdate(key:K,op:=>V):V" rel = "nofollow noreferrer „> getOrElseUpdate was tut genau das, was Sie wollen, kein Idiom notwendig.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top