0

合理的なクラスを書いているとエラーが発生しますが、コードに問題はありません。クラスと関連するメソッドは次のとおりです。

class Rational
    attr_reader :numerator, :denominator     

    def initialize(numerator=1,denominator=1)
        @numerator = numerator
        @denominator = denominator
        reduce
    end

    class << self   

        def lcd(r1,r2)
               ...
                       ...
        end

        def add(r1,r2)
            if r1.denominator != r2.denominator
                lcd(r1,r2)
            end
            Rational r = Rational.new(r1.numerator + r2.numerator, r1.denominator)
            r1.reduce
            r2.reduce
            return r
        end


end
r = Rational.new
r2 = Rational.new(1,3)
r3 = Rational.new(1,4)
r = Rational.add(r2,r3)

私が得るエラー:

rational.rb:53:in `add': undefined method `Rational' for Rational:Class (NoMethodError)

前もって感謝します!

4

2 に答える 2

1

Javaから来ましたか?Rubyでは宣言で変数の型を指定する必要はありません

Rational r = Rational.new(r1.numerator + r2.numerator, r1.denominator)

する必要があります

r = Rational.new(r1.numerator + r2.numerator, r1.denominator)
于 2013-09-17T06:05:22.660 に答える
0

Ruby では、型を宣言しません。

Rational r = ...

違う!Ruby はこれをメソッド呼び出し Rational() に引数 r を指定して呼び出したと解釈します。

于 2013-09-17T06:05:24.840 に答える