Pregunta

Estoy trabajando con un mapa en Scala y hago lo habitual " si no hay un valor asociado con una clave, créalo, colóquelo en el mapa y devuélvalo " ;:

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

Para mí, esto no se siente como el código idiomático de Scala. Se siente como Java. ¿Hay una forma más sucinta de escribir esto? Parecía que tal vez podría anular Map.default () para insertar el nuevo valor y devolverlo. Aunque no estoy seguro.

¡Gracias!

¿Fue útil?

Solución

mutable.Map tiene getOrElseUpdate que hace exactamente lo que usted quiere, no es necesario ningún idioma.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top