2016-10-15 6 views
2

クラスの+メソッドをオーバーライドして、同じクラスの別のオブジェクトを追加するにはどうすればよいですか?Rubyで同じクラスの2つのオブジェクトを追加するには?

以下

私が何をしたいですが、私は私の構文が間違っている上記のコードで

class Obj 
    def initialize(value) 
    @value = value 
    end 

    def +(obj_to_add) 
    @value +(obj_to_add.value) 
    end 
end 

o1 = Obj.new(1) 
o2 = Obj.new(1) 

puts o1 + o2 
+0

おそらく、あなたがそれを定義する方法では、正確な演算子(+)を使用しようとしているという事実?それは奇妙なように思えるだろう。スーパーという言葉を最初の行に入れるとどうなりますか? – MageeWorld

+2

'attr_accessor:value'を追加してください。あなたは行き​​たいです。 @MageeWorld、いいえ、@value +(obj_to_add.value)の '+'はインスタンスの '@ value'のクラスで定義されています。この例では、「Fixnum」です。 –

+0

@CarySwovelandそれをクリアするためのTHANKS – MageeWorld

答えて

0

あなたの主な問題は、あなたがあなたに必要valueためのアクセサを持っていないことであると確信しています+の実装。

はまた、それは潜在的に同じクラスの新しいインスタンスを返すために、より理にかなって:

class Obj 
    attr_reader :value 

    def initialize(value) 
    @value = value 
    end 

    def +(other) 
    self.class.new(@value + other.value) 
    end 
end 

Obj.new(1) + Obj.new(2) 
#=> #<Obj:0x007fa9138e0d28 @value=3> 
関連する問題