带算术运算符的Ruby方法名称:+;-*\和=,如+=
我有一个ADT(抽象数据类型),为此我编写了一个方法带算术运算符的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元素的新数组,因此具有一个新
+(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中总是一个方法,而=
是方法名称的一部分或分配的独立部分?是的<代码>=是方法名称的一部分,如果左侧类似于对象。方法
。否则,这只是一项任务。