如何在Ruby中添加同一个类的两个对象?

时间:2016-10-15 01:54:29

标签: ruby

如何覆盖类中的+方法以添加同一个类的另一个对象?

下面是我想要做的,但我确定我的语法错误

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

1 个答案:

答案 0 :(得分: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>