0
最近我試圖在我的腳本中添加一個數字到其中一個嵌套數組。 我只希望指定索引處的嵌套數組具有附加的數字,但實際發生的是所有嵌套數組都附加了數字。爲什麼Array#將附加到嵌套數組中的所有數組而不僅僅是指定的索引?
這種行爲似乎很奇怪,爲什麼ruby數組以這種方式工作?
irb(main):001:0> [1,2,3].push 3
=> [1, 2, 3, 3]
irb(main):002:0> layered = [[]] * 5
=> [[], [], [], [], []]
irb(main):003:0> layered[0] << 2
=> [2]
irb(main):004:0> layered
=> [[2], [2], [2], [2], [2]]
irb(main):005:0>
非常感謝你!這似乎有點令人困惑,爲什麼'[[]] * 5'會這樣做。你知道什麼時候使用'[[]] * 5'的實際例子是合適的嗎? – Nirma
當您將在賦值時替換整個數組(就像您應該這樣做)。所以如果你用'layered [0] + = [2]'代替'layered [0] << 2',那麼它應該可以工作。 – Hauleth