修改二维数组ruby
发布时间:2020-12-17 03:56:45 所属栏目:百科 来源:网络整理
导读:参见英文答案 Array of Arrays in ruby,passed by reference????????????????????????????????????2个 如果我创建这个数组: a = Array.new(3,Array.new(2,0)) 它创建: = [[0,0],[0,0]] 当我尝试更改特定元素时: a[0][0] = 3 它改变了多个值: = [[3,[3,0]
参见英文答案 >
Array of Arrays in ruby,passed by reference????????????????????????????????????2个
如果我创建这个数组: a = Array.new(3,Array.new(2,0)) 它创建: => [[0,0],[0,0]] 当我尝试更改特定元素时: a[0][0] = 3 它改变了多个值: => [[3,[3,0]] 为什么会这样?我怎样才能更改特定元素? 解决方法
您必须更改将阵列(
this is a known issue)初始化为此的方式:
a = Array.new(3) { Array.new(2,0) } 您的版本与此版本之间的区别在于Array.new(2,0)仅出现一次.你正在创建一个带有3个“指针”的数组到第二个数组.您可以在以下代码中看到此演示: a = Array.new(3,0)) a.map { |a| a.object_id } #=> [70246027840960,70246027840960,70246027840960] # Same object ids! a = Array.new(3) { Array.new(2,0) } a.map { |a| a.object_id } #=> [70246028007600,70246028007580,70246028007560] # Different object ids (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |