タイトルのまんまですが。
nil
が回ったりするのかなと勝手に思ってました。
# レシーバが空の配列だとブロック内は実行されない [].each { puts 'hoge'} #=> [] [].each { |i| puts i } #=> [] # Hash#each も同じく {}.each { puts 'hoge'} #=> {} {}.each { |k, v| puts k, v } #=> {} # ブロック無しの場合に返す Enumerator オブジェクトももちろん空 e = [].each #=> #<Enumerator: ...> e.each { |i| puts i} #=> []
参考
あんまり詳細載ってないけれど。