Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中添加同一类的两个对象?_Ruby - Fatal编程技术网

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

如何在Ruby中添加同一类的两个对象?,ruby,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 上述代码的主要问题是,您没有实现+所需的值的访问器

如何重写类中的+方法以添加同一类的另一个对象

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

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

上述代码的主要问题是,您没有实现
+
所需的
值的访问器

另外,返回同一类的新实例可能更有意义:

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>
类Obj
属性读取器:值
def初始化(值)
@价值=价值
结束
def+(其他)
self.class.new(@value+other.value)
结束
结束
新对象(1)+新对象(2)
#=> #

可能是因为您试图在定义它的方法中使用精确运算符(+)?这看起来有点奇怪。如果将单词super作为第一行,会发生什么?添加
attr\u accessor:value
,就可以开始了@mageworld,否,@value+(obj_to_add.value)
中的
+
是在实例中为其定义的类中定义的。在这个例子中,
Fixnum
@CarySwoveland感谢您清除了这个问题,谢谢Cary。也谢谢您的帮助@mageworld