我在Ruby中有一個由5個空數組組成的數組。我試圖使用<<
運算符將字符串推入第一個數組,但結果是該字符串被推入所有數組中。請幫我理解這一點。將字符串壓入數組中的數組會產生意外的結果
預期輸出是:
# => [["car"], [], [], [], []]
而是我得到:
# => [["car"], ["car"], ["car"], ["car"], ["car"]]
IRB轉儲:
1.9.3-p194 :001 > output = Array.new(5, [])
=> [[], [], [], [], []]
1.9.3-p194 :002 > output.inspect
=> "[[], [], [], [], []]"
1.9.3-p194 :003 > output[0].inspect
=> "[]"
1.9.3-p194 :004 > output[0] << "car"
=> ["car"]
1.9.3-p194 :005 > output.inspect
=> "[[\"car\"], [\"car\"], [\"car\"], [\"car\"], [\"car\"]]"
的可能重複[爲什麼沒有按在Ruby工作中定義新哈希值的方式很簡單(它們都指向相同的o bject)](http://stackoverflow.com/questions/7540084/why-doesnt-terse-way-of-defining-new-hashes-in-ruby-work-they-all-refer-to-sam) –
謝謝所有!這真的讓我感到難過。現在我學到了一個新方法:object_id –
任何人都可以幫助我理解爲什麼會發生這種情況,所以我可以更好地理解Ruby? –