2

次のコード ブロックで「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 がどうやってそこに入ったのか知りたいです。

4

2 に答える 2