次のコード ブロックで「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
#to_s なしで #puts seconds を実行しようとすると NoMethod: Fixnum エラーが発生するため、'seconds' が Fixnum であることはわかっています。また、前の行の「seconds」に対する「/」操作は正常に機能します。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
インスタンス変数と関係があり、インスタンス変数を理解していません。nil がどうやってそこに入ったのか知りたいです。