Как упоминалось в этот ответ , Array.new (size, object)
создает массив с ] size
ссылается на тот же объект
.
hash = Hash.new
a = Array.new(2, hash)
a[0]['cat'] = 'feline'
a # => [{"cat"=>"feline"},{"cat"=>"feline"}]
a[1]['cat'] = 'Felix'
a # => [{"cat"=>"Felix"},{"cat"=>"Felix"}]
Почему Ruby делает это, а не выполняет dup
или клон
объекта
?