nil的未定义方法`%':NilClass(NoMethodError)

时间:2013-05-05 21:28:48

标签: ruby

我编写了这个非常简单的代码块,可以完成我期望的所有代码 - 但是,在输出结束时,我总是得到错误消息“nil的未定义方法`%':NilClass(NoMethodError)”。如何/为什么会出现这种情况,我该如何解决?

def fizzblam

range =* (1..100)
range.each do |i|
if range[i] % 7 == 0 && range[i] % 5 == 0
puts "fizzblam"
elsif range[i] % 7 == 0 && range[i] % 5 != 0
puts "blam"
elsif range[i] % 7 != 0 && range[i] % 5 == 0
puts "fizz"
else puts range[i]
end
end
end

fizzblam

1 个答案:

答案 0 :(得分:2)

range的元素是1到100,但是range的索引是0到99. each方法已经为你提供了数组的元素,而不是索引 - 只需在循环体内使用i而不是range[i]

如果您使用a而不是a.fetch(i)索引数组a[i],那么您会得到更合理的错误 - 前者抛出IndexError而后者则{{1} }}