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