次の2つが同等ではないScalaの奇妙な機能に出くわしました。
var map = Map[A,B]()
map += ( key -> (valueGen(key)))
と同じ結果は得られません
var map = Map[A,B]()
val result = valueGen(key)
map += ( key -> result)
2 番目のスニペットは期待どおりに機能しますが、最初のスニペットはマップに正しく追加されません。代わりに、前の値を上書きして、追加されたすべての値ではなく、最後に書き込まれた値のみがマップに含まれるようにします。