【问题标题】:How to define a compound operator in Ruby (e.g. +=)?如何在 Ruby 中定义复合运算符(例如 +=)?
【发布时间】:2012-06-21 20:49:51
【问题描述】:

所以,我正在尝试为 Ruby 类定义运算符 ++=,然后尝试:

class A
    def +(x)
    end

    def +=(x)
    end
end

Ruby 喜欢 + 但不喜欢 +=,给我这个错误:

语法错误,意外 '=',期待 ';'或'\n'

我做错了什么?

【问题讨论】:

  • a += b === a = a + b,不是吗?
  • 语义上,是的。 Ruby(1.9.3,顺便说一句)不喜欢运算符方法语法,但是,我认为这是可以接受的,就像为 Fixnums、Strings 和 Arrays 定义的那样。
  • @xuinkrbin。这些类中的任何一个或 Ruby 中的任何类都没有 += 方法。

标签: ruby operators


【解决方案1】:

你不能在 ruby​​ 中重载赋值运算符

Overloading Operators - Ruby

【讨论】:

    【解决方案2】:

    您的a += b 被解释为a = a + b,并且仅使用+ 运算符。您也不必定义+= 运算符

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-04
      • 2012-08-06
      • 2019-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 2015-02-11
      相关资源
      最近更新 更多