相关疑难解决方法(0)

在Ruby中,为什么Array.new(size,object)创建一个由对同一对象的多个引用组成的数组?

本回答所述,Array.new(size, object)创建一个size引用相同的数组object.

hash = Hash.new
a = Array.new(2, hash)
a[0]['cat'] = 'feline'
a # => [{"cat"=>"feline"},{"cat"=>"feline"}]
a[1]['cat'] = 'Felix'
a # => [{"cat"=>"Felix"},{"cat"=>"Felix"}]
Run Code Online (Sandbox Code Playgroud)

为什么Ruby会这样做,而不是做一个dup或者clone一个object

ruby arrays

5
推荐指数
1
解决办法
4284
查看次数

修改二维数组ruby

如果我创建这个数组:

a = Array.new(3,Array.new(2,0))
Run Code Online (Sandbox Code Playgroud)

它创建:

=> [[0, 0], [0, 0], [0, 0]]
Run Code Online (Sandbox Code Playgroud)

当我尝试更改特定元素时:

a[0][0] = 3
Run Code Online (Sandbox Code Playgroud)

它改变了多个值:

 => [[3, 0], [3, 0], [3, 0]]
Run Code Online (Sandbox Code Playgroud)

为什么会这样?我怎样才能更改特定元素?

ruby

4
推荐指数
1
解决办法
59
查看次数

标签 统计

ruby ×2

arrays ×1