如this answer中所述,Array.new(size, object)
創建了一個數組,size
引用了相同的object
。在Ruby中,爲什麼Array.new(size,object)創建一個包含對同一對象的多個引用的數組?
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"}]
爲什麼紅寶石做到這一點,而不是做一個dup
或object
clone
?
「因爲這就是文檔所說的。」 - 我希望能夠將這個原因推進一點。 – 2011-01-09 23:58:31
彈出原因堆棧:因爲當您傳入要用於預填充數組的對象時,該數組將被預填充該對象。 – yfeldblum 2011-01-10 00:53:50