对于以下代码块,我收到“NoMethodError: undefined method `%' for nil:NilClass”:
class Timer
attr_accessor :seconds
def initialize
@seconds = 0
end
def time_string
if seconds < 10
return "00:00:0" + seconds.to_s
elsif seconds < 60
return "00:00:" + seconds.to_s
elsif seconds < 540
minutes = seconds / 60
seconds %= 60
#seconds = seconds - (minutes * 60)
return "00:0" + minutes.to_s + ":0" + seconds.to_s
end
end
def timer
@timer
end
end
我知道 'seconds' 是一个 Fixnum,因为当我尝试在没有 #to_s 的情况下 #puts seconds 时出现 NoMethod: Fixnum 错误。此外,前一行中“秒”上的“/”操作也可以正常工作。那么为什么我会收到 NoMethod:nilclass 错误消息?
为什么我什至会收到错误消息?“%”不应该在“/”的任何地方工作吗?
以下代码有效:
if seconds < 10
return "00:00:0" + seconds.to_s
elsif seconds < 60
return "00:00:" + seconds.to_s
elsif seconds < 540
minutes = @seconds / 60
seconds = @seconds % 60
return "00:0" + minutes.to_s + ":0" + seconds.to_s
end
它与实例变量有关,我不理解实例变量。很想知道零是如何进入那里的。