Есть ли список из всех рубиновых операторов, которые можно переопределить? (Не те, которые не могут!)Список операторов ruby, которые могут быть переопределены/реализованы
ответ
Вот a table of the Ruby operators.
Те, которые являются методами и Перегружаемым являются:
[ ] [ ]= Element reference, element set
** Exponentiation
! ~ + - Not, complement, unary plus and minus (method names for the last two are [email protected] and [email protected])
*/% Multiply, divide, and modulo
+ - Plus and minus
>> << Right and left shift
& Bitwise `and'
^ | Bitwise exclusive `or' and regular `or'
<= < > >= Comparison operators
<=> == === != =~ !~ Equality and pattern match operators (!= and !~ may not be defined as methods)
Стола был от кирки книги 2001 года, но это та же таблица, как и в книге Ruby 1.9 кирки - нет оснований полагать, что этот набор из инфиксных операторов будет когда-либо изменяться.
«Те, которые являются методами и перегружаемыми», я предполагаю, что вы имеете в виду, что можно перегружать только операторы, которые являются методами, нет? Кроме того, в то время как «чистые» операторы не могут быть перегружены, можно злоупотреблять более текстовыми словами (например, 'defined?', 'Not',' or', 'begin') в качестве имен для новых методов без какой-либо доскональности. – fny
Собственно,! = И! ~ Может быть перегружен/определен, хотя старый кирка говорит, что вы не можете. Еще в 2008 году в списке рассылки появилась жалоба, и Мац отметил, что Ruby является гибким. –
- 1. Список других приложений, которые могут быть прекращены
- 2. список настраиваемых функций, которые могут быть вызваны
- 3. Разделить на список строк, которые могут быть или не быть.
- 4. Ограничить количество ошибок, которые могут быть спасены?
- 5. Переменные, которые могут быть эхом
- 6. заявления, которые могут быть перераспределены
- 7. магазин матрица элементов, которые могут быть похожи
- 8. список хранимых процедур, которые могут быть вызваны для каждого пользователя
- 9. Полный список событий, которые могут быть связать()/на()/жить(), JQuery
- 10. Список всех исключений, которые могут быть выбраны методом
- 11. Список Haskell с кортежами, которые могут быть расширены - как словарь
- 12. Функция возвращает список значений, которые могут быть получить только асинхронно
- 13. Список всех функций, которые могут быть выполнены пользователем
- 14. сигналов, которые могут быть получены в терминале
- 15. Могут ли операторы Ruby быть псевдонимом?
- 16. Список языков программирования, которые могут взаимодействовать вместе
- 17. Значения, которые могут быть сохранены в LMDB
- 18. Параметры sql, которые могут быть необязательными
- 19. Выбор ячеек, которые могут быть активными ячейками
- 20. переменные, которые не могут быть обобщенными
- 21. TDD - Зависимости, которые не могут быть издевались
- 22. Реализация форм, которые могут быть динамически изменены
- 23. Максимальное количество яблок, которые могут быть собраны
- 24. Ограничить количество файлов, которые могут быть загружены
- 25. Вещи, которые не могут быть унаследованы
- 26. Очереди поддержания порядка, которые могут быть приостановлены
- 27. Поверхности, которые не могут быть удалены
- 28. Ключи Trello, которые могут быть открыты?
- 29. панели уведомлений jquery, которые могут быть уволены?
- 30. Найти порты, которые * могут * быть открыты
** Перегрузка ** - это использование одного и того же имени метода для разных действий, где метод можно различить только по его подписи. На самом деле это невозможно в Ruby. Переопределение или переопределение - это правильный термин здесь. –
Спасибо за детали, @platzhirsch. Я отредактировал вопрос. Странно, как это обычно называется перегрузкой оператора, а? – aaaidan
Ну, один, как и я, всегда может быть разборчивым в отношении использования терминов и их значения :-) В конце концов, он происходит от таких языков, как C++, где он, возможно, делает то же самое, но основан на различной семантике. –