2011/03/09

hash.merge

Hash の merge

2つのハッシュに同じkey が存在した場合...
merge 元の値は nil じゃない。
merge 対象の値は nil。
これらを merge すると nil ではない merge 元の値は保持されたままになるのだっけ?
なーんて一瞬でも思ったのは大間違いだった。

% irb
>> a = {:a=>'a', :b=>'b'}
=> {:b=>"b", :a=>"a"}
>> b = {:a=>nil, :b=>'c'}
=> {:b=>"c", :a=>nil}
>> a.merge(b)
=> {:a=>nil, :b=>"c"}


nil であろうときっちり上書きされて nil になる。
上書きされたくなければ同じ key を持たない。...というかマージしない...?

0 件のコメント: