我尝试创建一个嵌套数组,但是当我更新其中一个时,所有其他数组似乎都在更新,我做错了什么?
arr = Array.new(5,Array.new())
# => [[], [], [], [], []]
arr[0]
# => []
arr[0].push(1)
# => [1]
arr
# => [[1], [1], [1], [1], [1]]
答案 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], [], [], [], []]