Что происходит, когда мы используем операторы в ruby - PullRequest
1 голос
/ 29 октября 2011

Как я понимаю, когда мы добавляем два числа в ruby, для текущего объекта вызывается метод '+' с параметром в качестве следующего объекта.

>> 2 + 3
=> 5



>> 2.+(3)
=> 5

Как эти два примера одинаковы?что мы можем вызывать методы на объектах без оператора точки?Как это происходит в первом примере?если это так, то может ли метод 3 быть вызван методом '+'?(Это даже не имеет смысла)

Ответы [ 2 ]

4 голосов
/ 29 октября 2011

Руби знает, что + является оператором, потому что так говорит грамматика языка. Есть также унарный оператор + (который преобразуется в метод +@ ), а грамматика языка позволяет Ruby знать, что есть что. Определение языка говорит, что операторы реализованы как вызовы методов, и указывает, к какому методу относится каждый оператор.

То, что вы спрашиваете, аналогично тому, как o.m a - это вызов метода m для o с a в качестве аргумента. Именно так определяются синтаксис и семантика Ruby.

Операторы являются функциями даже в теоретической математике. Обозначение a + b на самом деле является просто удобным обозначением для +(a, b) (где +: R 2 & rarr; R или функция от R & times; R до R , например). Я думаю, что вы слишком много читаете в нотации и думаете, что операторы - это что-то особенное, это не так, они просто вызовы функций на компьютерных языках и в математике.

Короче говоря, это работает, потому что именно так работает Ruby.

Насколько

Может ли метод 3 вызываться на методе '+'?

, 3 - это аргумент или , параметр для метода + объекта Fixnum 2.

1 голос
/ 29 октября 2011

a + b - просто сахарный синтаксис для a. + (B). В ruby ​​почти все является объектом, и даже «операторы» на самом деле являются методами числа. Не больше волшебства, чем синтаксис сахара.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...