惯用斯卡拉地图upsert

时间:2009-01-03 04:35:13

标签: scala scala-collections

我正在使用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()来插入新值并返回它。但不确定。

谢谢!

1 个答案:

答案 0 :(得分:33)

mutable.MapgetOrElseUpdate,它完全符合您的要求,无需成语。