我们有一个数组数组: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,而不是在拾取整个第一个嵌套数组。为什么会这样呢?
答案 0 :(得分:2)
完成时
for zero in z_index
这实际上是
z_index.each do |zero|
in
循环的for in
部分必须可以迭代(数组)
z_index
是x
的第一个元素,它也是matrix
的第一个元素,因此它包含一个整数。