Я использую Ruby, 1.9.2-P290 и нашел:Почему поведение array.each зависит от синтаксиса Array.new?
a = Array.new(2, []).each {|i| i.push("a")}
=> [["a", "a"], ["a", "a"]]
, который не то, что я бы ожидать. Но следующий стиль конструктора делает то, что я ожидаю:
b = Array.new(2) {Array.new}.each {|i| i.push("b")}
=> [["b"], ["b"]]
Является ли первый пример ожидаемым поведением?
В ruby-doc это похоже на мой аргумент size=2
- это тот же аргумент для обоих конструкторов. Я думаю, что если метод each
получает этот аргумент, он будет использовать его одинаково для обоих конструкторов.