Ruby中的嵌套数组,更新所有数组值而不是一个

时间:2018-05-15 07:25:22

标签: ruby

我尝试创建一个嵌套数组,但是当我更新其中一个时,所有其他数组似乎都在更新,我做错了什么?

arr = Array.new(5,Array.new())
# => [[], [], [], [], []] 
arr[0]
# => [] 
arr[0].push(1)
# => [1] 
arr
# => [[1], [1], [1], [1], [1]]

2 个答案:

答案 0 :(得分:2)

您可以使用block syntax初始化数组:

arr = Array.new(5) { Array.new }
 => [[], [], [], [], []] 

arr[0].push(1)
arr
 => [[1], [], [], [], []]

答案 1 :(得分:1)

map生成数组:

arr = 5.times.map { [] }

arr.first << 42
#⇒ [42]
arr
#⇒ [[42], [], [], [], []]