Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
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 - Fatal编程技术网

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 尝试更改使用迭代创建的数组中的单个值会更改多个值。为什么? 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这个问题在这里被问了无数次,一个懒散的搜索会带来几十个关闭

在这段代码中,我希望修改后的b与修改后的a相同,但是每个嵌套数组的第二个元素都被修改了


我缺少什么?为什么
a[1][1]=1
b[1][1]=1
会产生不同的结果?

3.times{b
3.times{b All
row
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]]