Idiomatic Scala Map upsert
-
03-07-2019 - |
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!
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