Just do IT

思うは招く

【Ruby】{} と Hash.new(0) でハッシュを作るときの違い

一見すると、どちらも同じハッシュを作っているように見える。

irb(main):001:0> Hash.new(0)
=> {}

irb(main):002:0> {}
=> {}

では何が違うのか?

  • Hash.new(0)はハッシュのデフォルト値を設定している
  • {}はデフォルト値を設定していない
irb(main):003:0> Hash.new(0)['a']
=> 0

irb(main):004:0> {}['a']
=> nil