如果我创建了这个数组:
为什么会发生这种情况?如何更改特定元素?
a = Array.new(3,Array.new(2,0))
它创造了:
=> [[0, 0], [0, 0], [0, 0]]
当我尝试更改特定元素时:
a[0][0] = 3
IT技术可以同时改变多个值:
=> [[3, 0], [3, 0], [3, 0]]
为什么会发生这种情况?如何更改特定元素?
a = Array.new(3) { Array.new(2,'a') }
(a
是可变的),并且您重新分配一个元素,a[0][0] = 'b'
,那么没有问题:a #=> [["b","a"], ["a","a"], ["a","a"]]
。但是,如果您替换一个元素,a[0][0].replace('b')
,则会得到[["b","b"], ["a","a"], ["a", "a"]]
。(如果您想测试此内容,请确保首先重新初始化a
。)如果您使用a = Array.new(3) { Array.new(2) {'a'} }
,然后a[0][0].replace('b'); a #=> [["b","a"], ["a","a"], ["a","a"]]
,就像期望的一样。如果您不确定,请将默认值放在块中。 - Cary Swoveland