Являются ли операторами +, -, * и т.д.?

+, - и т.д. - это не операторы, а методы. Таким образом, их можно переопределить новыми определениями.

  class MyString < String
    def -(other)            # New method
      self[0...other.size]  # self truncated to other's size
    end
  end

Однако следующий список - это встроенные структуры, а не методы, то есть переопределить их нельзя:

 =, .., ..., !, not, ||, &&, and, or, ::

Чтобы определить или переопределить унарные операторы, нужно использовать +@ и -@ как имена методов.

Символ = используется для определения метода, меняющего атрибут объекта:

  class Test
    def attribute=(val)
      @attribute = val
    end
  end
  t = Test.new
  t.attribute = 1

Если такие операторы, как + и -, определены, Ruby автоматически меняет поведение +=, -=.

Вход для пользователей