【问题标题】:Ruby method name with Arithmetic Operators: + - * \ and =, like += [duplicate]带有算术运算符的 Ruby 方法名称:+ - * \ 和 =,如 += [重复]
【发布时间】:2017-12-02 10:04:05
【问题描述】:

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

如果我像这样使用它:

adt += otherAdt

它将被覆盖adt

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

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

我的替代方法是将其命名为 plus=(other)

我知道如果我有两个数组 aArrbArr 并写:

aArr += bArr

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

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

编辑:我在@Mladen Jablanović 的回答下面问了一个问题。

【问题讨论】:

    标签: ruby math methods operator-keyword overwrite


    【解决方案1】:

    你不能。 a += ba = a + b 的简写,它总是分配回 a,您不能重新定义分配,因为它不是一种方法。

    【讨论】:

    • 这是否意味着 + 始终是 ruby​​ 中的方法,而 = 是方法名称的一部分或独立的赋值?
    • 是的。如果左侧类似于object.method,则= 是方法名称的一部分。否则它只是一个任务。
    猜你喜欢
    • 2013-04-29
    • 2022-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多