Создать несколько массивов в одну строку - PullRequest
0 голосов
/ 29 августа 2018

Я сделал:

a, b = Array.new(2, [0, 0])
a[0] = 1

У меня есть:

a # => [1, 0]

У меня проблема с b, которая совпадает с a:

b # => [1, 0]

Проблема в ссылочном адресе.

Помогите мне инициализировать массив в одну строку.

1 Ответ

0 голосов
/ 29 августа 2018

Это упоминается здесь :

При отправке второго параметра (Array.new) один и тот же объект будет использоваться в качестве значения для всех элементов массива:

Итак, как @mudasobwa уже предлагал в комментариях, вам нужно использовать версию блока, которая использует результат блока для каждого элемента:

a, b = Array.new(2) { [0, 0] }
 => [[0, 0], [0, 0]]

a[0] = 1

a
 => [1, 0]

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