Idiomática Scala Mapa upsert
-
03-07-2019 - |
Pergunta
Eu estou trabalhando com um mapa no Scala e fazer o habitual "se não houver nenhum valor associado com uma chave, criá-lo, colocá-lo no mapa e devolvê-lo":
def alphaMemory(key : AlphaMemoryKey) = {
var am = map.getOrElse(key, null)
if(am == null) {
am = new AlphaMemory(key)
map.put(key, am)
}
am
}
Para mim, isso não se sente como código Scala idiomática. Ela se sente como Java. Existe uma maneira mais sucinta de escrever isso? Parecia que talvez eu pudesse substituir Map.default () para inserir o novo valor e devolvê-lo. Não tenho certeza embora.
Obrigado!
Solução
mutable.Map
tem < a href = "http://www.scala-lang.org/api/current/scala/collection/mutable/Map.html#getOrElseUpdate(key:K,op:=>V):V" rel = "nofollow noreferrer "> getOrElseUpdate
que faz exatamente o que você quer, não idioma necessário.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow