Ruby каждый во вложенном массиве возвращает противоречивые результаты - PullRequest
0 голосов
/ 25 сентября 2018

У нас есть массив массивов: matrix = [[0, 1, 1, 2], [0, 5, 0, 0], [2, 0, 3, 3]]

Теперь вызов

matrix.each do |x| 
  print x
end

возвращает три массива, как я и ожидал ([0, 1, 1, 2][0, 5, 0, 0][2, 0, 3, 3]).

Но при выполнении

matrix.each do |x| 
    if x.include?(0)
        z_index = x.index(0)
        for zero in z_index
            for x in matrix do
                matrix[i].delete_at(zero)
                i+=1
            end
        end
    else
        next
    end
end

я получаю undefined method 'each' for 0:Integer, что означает, что each выбирает 0 в первом вложенном массиве, а не собирает весь первый вложенный массив.Почему так себя ведет?

1 Ответ

0 голосов
/ 25 сентября 2018

Когда вы делаете

for zero in z_index 

Это эффективно

z_index.each do |zero|

Часть in цикла for in должна быть чем-то, что вы можете перебирать (массив)

z_index - это первый элемент x, который является первым элементом matrix, поэтому он содержит целое число.

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