度忘れしてた
久しぶりにrubyを書くことがあって、
h = Hash.new h["aa"] = obj1 h["ab"] = obj2 # acというキーがないときは、追加する。 if h["ac"] != nil h["ac"] = obj3 end
という感じの処理を書いてはまった。
Hashの"a"というキーがないとき
h["a"] == nil と、h["a"] == {} は結果が違う。
いや、よくよく考えると当たり前なんだろうけど、完全に頭の中から抜けててしばらく困った。
#ruby -v #ruby 1.8.7 (2009-06-12 patchlevel 174) [universal-darwin10.0] $irb >> h = Hash.new => {} >> h["a"] == nil => true >> h["a"] == {} => false >> p h["a"] nil => nil >>