Domanda

Sto lavorando con una mappa in Scala e sto facendo il solito " se non c'è alcun valore associato a una chiave, crearlo, inserirlo nella mappa e restituirlo " ;:

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

Per me, questo non sembra idiomatico codice Scala. Sembra Java. C'è un modo più conciso di scrivere questo? Sembra che potrei sovrascrivere Map.default () per inserire il nuovo valore e restituirlo. Non sono sicuro però.

Grazie!

È stato utile?

Soluzione

mutable.Map ha getOrElseUpdate che fa esattamente quello che vuoi, nessun linguaggio necessario.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top