Come indicato in this answer, Array.new(size, object)
crea un array con i riferimenti size
allo stesso object
.In Ruby, perché Array.new (dimensione, oggetto) crea una matrice costituita da più riferimenti allo stesso oggetto?
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"}]
Perché Rubino fare questo, piuttosto che fare un dup
o clone
di object
?
"Perché è così che dice la documentazione." - Speravo di inserire il motivo per cui un po 'più in là. –
Popping dello stack perché: quando si passa un oggetto da utilizzare per precompilare l'array, l'array verrà prepopolato con tale oggetto. – yfeldblum
@Justice: Eri serio o sarcastico con quel commento? –