Вложенный массив в Ruby, обновляет все значения массива вместо одного - PullRequest
0 голосов
/ 15 мая 2018

Я пытался создать вложенный массив, но когда я обновляю один из них, кажется, что все остальные массивы обновляются. Что я делаю не так?

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

Ответы [ 2 ]

0 голосов
/ 15 мая 2018

map создает массив:

arr = 5.times.map { [] }

arr.first << 42
#⇒ [42]
arr
#⇒ [[42], [], [], [], []]
0 голосов
/ 15 мая 2018

Вы можете использовать синтаксис блока для инициализации массива:

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

arr[0].push(1)
arr
 => [[1], [], [], [], []]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...