带算术运算符的Ruby方法名称:+;-*\和=,如+=

带算术运算符的Ruby方法名称:+;-*\和=,如+=,ruby,math,methods,operator-keyword,overwrite,Ruby,Math,Methods,Operator Keyword,Overwrite,我有一个ADT(抽象数据类型),为此我编写了一个方法+(other)。 +(其他)返回新的ADT 如果我像这样使用它: adt += otherAdt 它将被覆盖adt 但是现在我想编写一个名为+=(other)的方法来更改adt,而不是创建一个新的方法 我尝试将我的方法命名为+=(other),并得到一个错误 我的选择是将其命名为plus=(其他) 我知道如果我有两个数组aArr和bArr,然后写: aArr += bArr aArr是一个包含aArr和bArr元素的新数组,因此具有一个新

我有一个ADT(抽象数据类型),为此我编写了一个方法
+(other)
+(其他)
返回新的ADT

如果我像这样使用它:

adt += otherAdt
它将被覆盖
adt

但是现在我想编写一个名为
+=(other)
的方法来更改
adt
,而不是创建一个新的方法

我尝试将我的方法命名为
+=(other)
,并得到一个错误

我的选择是将其命名为
plus=(其他)

我知道如果我有两个数组
aArr
bArr
,然后写:

aArr += bArr
aArr
是一个包含
aArr
bArr
元素的新数组,因此具有一个新的Object-ID

那么,有没有办法在Ruby中覆盖
+=
-=
*=
*=
? 如果是这样的话,它会是什么样子


编辑:我在@Mladen Jablanović的回答下面问了一个问题。你不能
a+=b
a=a+b
的简写,它总是分配回
a
,您不能重新定义分配,因为它不是一个方法。

这是否意味着
+
在ruby中总是一个方法,而
=
是方法名称的一部分或分配的独立部分?是的<代码>=是方法名称的一部分,如果左侧类似于
对象。方法
。否则,这只是一项任务。