Метод синонимов в Ruby - PullRequest
       1

Метод синонимов в Ruby

3 голосов
/ 31 марта 2010

Я знакомлюсь с Ruby, и впервые вижу синонимы для методов в стандартной библиотеке. Пока что я нашел их в модуле Enumerable:

collect <-> map
detect <-> find
include <-> member
etc.

Возможно, другие модули также содержат синонимические методы. Почему они там? Это какая-то обратная совместимость? Или это особенность языка, поэтому программист может выбирать между различными вариантами в зависимости от контекста, чтобы программа выглядела как обычный английский?

Ответы [ 2 ]

3 голосов
/ 31 марта 2010

Синонимы основаны на знакомстве пользователей, пришедших из различных сценариев или программных фонов с существующей номенклатурой (например, map, grep и т. Д. Очень знакомы людям, происходящим из Perl.)

Иногда также бывает полезно косвенно иметь эти синонимы, например, в Rails ассоциаций , который также должен вести себя как перечислимый, find перегружен для выполнения фактического запроса SQL, тогда как синоним detect остается доступным для выполнения фактического перечислимого find / detect.

3 голосов
/ 31 марта 2010

Я думаю, что это сделано, чтобы быть совместимым с использованием слов другими языками программирования. Ruby основан на Smalltalk. В Smalltalk collect означает карту. Однако большинство языков программирования в мире использует map, поэтому Руби добавил map, чтобы другие люди чувствовали себя знакомыми.

Подробнее см. http://en.wikipedia.org/wiki/Map_function.

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