Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Почему Ruby использует response_to? вместо responses_to?

Автор вопроса: NickОтветов: 2

Мне любопытно, почему метод Ruby, связанный с самоанализом, чтобы проверить, отвечает ли объект методу, равен respond_to? вместо responds_to?

Мне всегда это кажется неуклюжим, но, может быть, это потому, что я привык к respondsToSelector в Objective-C.

  • Может быть, он пытается быть императивным: эй, вы возражаете, ОТВЕЧАЙТЕ! julx 12.03.2011
  • Не могу поверить, что этот вопрос не задавали раньше! Andrew Grimm 12.03.2011

rubynaming-conventionsintrospection

Ответы

Ответ 1 · рейтинг 75 · Andrew Grimm

Мац предпочитает второе лицо единственного или третьего лицо во множественном числе:

"отвечает_на?" вероятно, имеет больше смысла для англоговорящих, чем "respond_to?".

Может быть. Но я японец. Руби не английский. Это основное правило именования, позволяющее избегать формы единственного числа от третьего лица в стандартных библиотеках.

  you = Human.new
  if you.respond_to?(:knock)
    ...
  end

Ответ 2 · рейтинг 8 · sawa

Откуда вы знаете, что получатель всегда в третьем лице единственного числа? Возможно, получателем будет I, we, you или they, или что-то другое, представляющее множественность. В таком случае вы по-прежнему будете говорить, что responds_to? естественнее, чем respond_to?? Чтобы сохранить общность, лучше называть метод в как можно более общей форме. Вместо того, чтобы называть метод в третьем лице единственного числа, имеет смысл назвать его в форме по умолчанию, to-less инфинитива, которая также используется в словарях.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы