未定义的方法错误.我该怎么办呢?



我正在练习用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,并且调用nil.floor得到NoMethodError

相关内容

最新更新