Обновление идиоматической карты Scala
-
03-07-2019 - |
Вопрос
Я работаю с картой в 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
который делает именно то, что вы хотите, никакой идиомы не требуется.
Не связан с StackOverflow