Мне нужен двумерный массив в Ruby, к которому я могу получить доступ, например, так:
if @array[x][y] == "1" then @array[x][y] = "0"
Проблема в том, что я не знаю начальных размеров размеров массива и увеличиваю массив (с помощью оператора <<
).
Как мне объявить его как переменную экземпляра, чтобы я не получил такую ошибку?
undefined method `[]' for nil:NilClass (NoMethodError)
ВОПРОС ОБНОВЛЕНО:
@array = Array.new {Array.new}
теперь работает для меня, поэтому комментарий Мэтта ниже верен!
Я только что узнал, почему я получил ошибку, потому что я перебрал массив так:
for i in 0..@array.length
for j in 0..@array[0].length
@array[i][j] ...
, который был явно неправильным и вызвал ошибку. Это должно быть так:
for i in 0..@array.length-1
for j in 0..@array[0].length-1
@array[i][j] ...