Каков идиоматический способ getOrElseUpdate для неизменяемых экземпляров .Map?. Я использую фрагмент ниже, но он выглядит многословным и неэффективным.
var map = Map[Key, Value]()
def foo(key: Key) = {
val value = map.getOrElse(key, new Value)
map += key -> value
value
}