度忘れしてた

久しぶりに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
>>