基本上我循环遍历数组矩阵来累加列,但它在9.times
循环的第二次迭代之前停止。如果我更改y = 1
,它将执行操作并停在y = 2
,依此类推。
def new_feature(board)
x=0
y=0
vertical = []
while y < 9
9.times do
vertical << board[x][y]
x += 1
end
puts vertical.reduce(:+)
vertical = []
y += 1
end
end
答案 0 :(得分:3)
您永远不会将x
重置为0,因此在第二次while
次迭代中,x
以9
开头,最后一次完成,而不是0
。这使得board[9]
,可能超出范围,因此nil
;然后nil[1]
崩溃你的代码。
请注意,您可以编写9.times do |x| ... end
以x
从0
计算到8
,而无需任何人工计数,因为times
会将当前的迭代次数传入块。
此外,还有一种更加Ruby的方式来对列进行求和:
board.transpose.map { |row| row.reduce(&:+) }