Arrays 尝试更改使用迭代创建的数组中的单个值会更改多个值。为什么? a=[[0,0,0],[0,0,0],[0,0,0]] b=[] 行=[] 3.乘以{row[[0,0,0],[0,0,0],[0,0,0]] PA==b#=>真 p(a[1][1]=1)==(b[1][1]=1)#=>真 #然而。。。 a[1][1]=1 b[1][1]=1 p a#=>[[0,0,0],[0,1,0],[0,0,0]] p b#=>[0,1,0],[0,1,0],[0,1,0]]
在这段代码中,我希望修改后的b与修改后的a相同,但是每个嵌套数组的第二个元素都被修改了Arrays 尝试更改使用迭代创建的数组中的单个值会更改多个值。为什么? a=[[0,0,0],[0,0,0],[0,0,0]] b=[] 行=[] 3.乘以{row[[0,0,0],[0,0,0],[0,0,0]] PA==b#=>真 p(a[1][1]=1)==(b[1][1]=1)#=>真 #然而。。。 a[1][1]=1 b[1][1]=1 p a#=>[[0,0,0],[0,1,0],[0,0,0]] p b#=>[0,1,0],[0,1,0],[0,1,0]],arrays,ruby,iterator,Arrays,Ruby,Iterator,在这段代码中,我希望修改后的b与修改后的a相同,但是每个嵌套数组的第二个元素都被修改了 我缺少什么?为什么a[1][1]=1和b[1][1]=1会产生不同的结果?行3.times{b3.times{b Allrows引用同一对象。使用3.times{b只有一行row。所有rows引用同一对象。使用3.times{b只有一行,。@SRack save这个问题在这里被问了无数次,一个懒散的搜索会带来几十个关闭的重复答案。@SRack save这个问题在这里被问了无数次,一个懒散的搜索会带来几十个关闭
我缺少什么?为什么
a[1][1]=1
和b[1][1]=1
会产生不同的结果?行3.times{b3.times{b Allrow
s引用同一对象。使用3.times{b只有一行row
。所有row
s引用同一对象。使用3.times{b只有一行,
。@SRack save这个问题在这里被问了无数次,一个懒散的搜索会带来几十个关闭的重复答案。@SRack save这个问题在这里被问了无数次,一个懒散的搜索会带来几十个关闭的重复答案。
a = [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
b = []
row = []
3.times { row << 0 }
3.times { b << row }
p a #=> [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
p b #=> [[0, 0, 0], [0, 0, 0], [0, 0, 0]]
p a == b #=> true
p (a[1][1] = 1) == (b[1][1] = 1) #=> true
# and yet ...
a[1][1] = 1
b[1][1] = 1
p a #=> [[0, 0, 0], [0, 1, 0], [0, 0, 0]]
p b #=> [[0, 1, 0], [0, 1, 0], [0, 1, 0]]