私はRuby(Ruby 1.9.3、IRB 0.9.6(09/06/30))をいじり回しており、複素数クラスを開発しようとしています。initialize
とto_s
メソッドは正常に機能しています。現在、4つの算術演算子をオーバーロードしようとしています。
私が持っていたのは次のとおりです。
def +(other)
return ComplexNumber.new(@real + other.@real, @imag + other.@imag)
end
しかし、何らかの理由でそれは好きではありませんでしたother.@real
; それは言う
構文エラー:予期しないtIVAR
。の後のコンマを指しますother.@real
。
それで私はそれを次のように変更しました:
def get_values
return [@real, @imag]
end
def +(other)
other_values = other.get_values
return ComplexNumber.new(@real + other_values[0], @imag + other_values[1])
end
これは機能しますが、正しい方法ではないと感じています。get_values
メソッドを公開したくありません。同じクラスの別のインスタンスの変数にアクセスする方法はありませんか?