我正在练习用Ruby编写代码,当我输入以下代码时,会出现以下错误。在这种情况下,我应该怎么做?
代码在这里:
class RandomSequence
def initialize(limit,num)
@limit,@num=limit,num
end
def each
@num.times {yield(rand*@limit).floor}
end
end
i=-1
RandomSequence.new(10,4).each do |num|
i=num if i<num
end
http://ideone.com/bSkAXN
我得到的错误消息是:
prog.rb:8:in block in each: undefined method floor for nil:NilClass (NoMethodError)
from prog.rb:8:in times
from prog.rb:8:in each
from prog.rb:14:in <main>
最佳答案
添加括号:
@num.times {yield((rand*@limit).floor)}
如果没有额外的括号,
yield(rand*@limit)
将返回nil
,您将得到一个用于调用NoMethodError
的nil.floor
。关于ruby - 未定义的方法错误。该怎么办?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23660703/