29

私は 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() をオーバーライドして、新しい値を挿入して返すことができるように見えました。わかりません。

ありがとう!

4

1 に答える 1

39

mutable.Map必要なイディオムはgetOrElseUpdateありません。

于 2009-01-03T04:46:00.257 に答える