title: Idiomatic Scala Map upsert
body: <p>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":</p>
  
  <pre><code>def alphaMemory(key : AlphaMemoryKey) = {
      var am = map.getOrElse(key, null)
      if(am == null) {
          am = new AlphaMemory(key)
          map.put(key, am)
      }
      am
  }
  </code></pre>
  
  <p>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.</p>
  
  <p>Thanks!</p>