Вопрос

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

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

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

Спасибо!

Это было полезно?

Решение

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top