Почему Ruby только разрешает определенную перегрузку оператора

Отличная статья по этой теме для будущих прохожих:

http://blog.superpat.com/2010/07/14/semaphores-on-linux-sem_init- против-sem_open /

8
задан Simone Carletti 9 October 2010 в 21:18
поделиться

5 ответов

Методы являются сверхзагружаемыми, это - часть синтаксиса языка.

11
ответ дан 5 December 2019 в 04:31
поделиться

Да. Операторы не являются сверхзагружаемыми. Только методы.

Некоторые операторы не действительно. Они - сахар для методов. Так 5 + 5 действительно 5.+(5), и foo[bar] = baz действительно foo.[]=(bar, baz).

12
ответ дан 5 December 2019 в 04:31
поделиться

И давайте не забывать о << например:

string = "test"
string << "ing"

совпадает с вызовом:

string.<<("ing")
1
ответ дан 5 December 2019 в 04:31
поделиться

В Ruby 1.9, ! оператор является на самом деле также методом и может быть переопределен. Это только уезжает && и || и их дубликаты низкого приоритета and и or.

Существуют также некоторые другие "операторы смешанных сетей", которые не могут быть переопределены, например. a != b на самом деле !(a == b) и a += b на самом деле a = a+b.

6
ответ дан 5 December 2019 в 04:31
поделиться
Другие вопросы по тегам:

Похожие вопросы: