Question

I'm working with a map in Scala and doing the usual "if there's no value associated with a key, create it, put it in the map and return it":

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

To me, this does not feel like idiomatic Scala code. It feels like Java. Is there a more succinct way of writing this? It looked like maybe I could override Map.default() to insert the new value and return it. Not sure though.

Thanks!

Was it helpful?

Solution

mutable.Map has getOrElseUpdate which does exactly what you want, no idiom necessary.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top