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!

Foi útil?

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
scroll top