Подтвердить что ты не робот

Идиоматический Scala Карта upsert

Я работаю с картой в Scala и делаю обычный ", если нет значения, связанного с ключом, создайте его, поместите на карту и верните его":

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

Для меня это не похоже на идиоматический код Scala. Это похоже на Java. Есть ли более сжатый способ написать это? Похоже, что я мог бы переопределить Map.default(), чтобы вставить новое значение и вернуть его. Не уверен, хотя.

Спасибо!

4b9b3361

Ответ 1

mutable.Map имеет getOrElseUpdate который делает именно то, что вы хотите, никакой идиомы не требуется.