Map#subMap はビューじゃなくて別インスタンス生成?
Groovyイン・アクション の 4.3.2 マップ演算子の使用 の中で
Map#subMap は元のマップに対するビューの作成
って感じの記述があって、 あれ? となったので実験。
def myMap = [a:1, b:2, c:3] def mySubMap = myMap.subMap(['a', 'b']) assert mySubMap == [a:1, b:2] mySubMap.a = 5 assert myMap == [a:1, b:2, c:3] assert mySubMap == [a:5, b:2] myMap.a = 10 assert myMap == [a:10, b:2, c:3] assert mySubMap == [a:5, b:2]
あれ? (´・ω・`)
ビューって事は、myMap の Entry への参照を保持したもう一個の Map を作るんだと思ってたんですが・・・
これだとビューの作成じゃなくて 別インスタンスの作成 じゃないのかな?
僕の言葉の理解が間違えてる? (´・ω・`)
追記
id:beyondseeker さんのコメントからも、やっぱ myMap 内部に保持されてる Entry とは別のインスタンスを作ってるっぽい。
という事は、ここで言う ビュー というのは、 別の形の参照 という意味合いではないっぽいですねー。
ここらへんは相当気をつけないと軽く罠にはまりそうだ。。。