質問

私は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()をオーバーライドして新しい値を挿入して返すことができるようです。わからない。

ありがとう!

役に立ちましたか?

解決

mutable.Map には getOrElseUpdate これは希望どおりに機能し、イディオムは不要です。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top