Mapa de Scala idiomático superior
-
03-07-2019 - |
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!
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