Array#inject でキーに対する値を配列で持つ Hash を生成する際に、
m = ["a","a","b","b"].inject(Hash.new([])){|map,v| map[v] << v.upcase map } p m #=> {}
としちゃって返ってきた Hash が空でたまにハマる。
デフォルト値として、毎回同一のオブジェクトifnoneを返します。
class Hash
上の例だと
p m.default
#=> ["A","A","B","B"]
となって、ifnone に全て突っ込まれてしまっている。
別に初期処理をかませばいいんだけど、これまた () を省略してまたハマったりする。
m = ["a","a","b","b"].inject(Hash.new){|map,v| (map[v] ||= []) << v.upcase map } p m #=> {"a"=>["A", "A"], "b"=>["B", "B"]} p m.default #=> nil