Подтвердить что ты не робот

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

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

Мне всегда кажется неудобным, но, возможно, потому, что я привык к respondsToSelector в objective-c.

4b9b3361

Ответ 1

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

"responds_to?" вероятно, делает больше смысл для говорящих на английском языке, чем "Respond_to?".

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

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

Ответ 2

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