Мне нужен двумерный массив в 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] ...