Почему Ruby использует response_to? вместо replys_to?
Мне любопытно, почему связанный с методом Ruby метод проверки, проверяющий, отвечает ли объект методу respond_to?
вместо responds_to?
Мне всегда кажется неудобным, но, возможно, потому, что я привык к respondsToSelector
в objective-c.
Ответы
Ответ 1
Matz предпочитает второе лицо единственного числа или третьего лица:
"responds_to?" вероятно, делает больше смысл для говорящих на английском языке, чем "Respond_to?".
Может быть. Но я японский. Рубин не Английский. Это основное правило именования избежать особой формы третьего лица в стандартные библиотеки.
you = Human.new
if you.respond_to?(:knock)
...
end
Ответ 2
Откуда вы знаете, что приемник всегда является третьим лицом единственного числа? Возможно, что приемник будет I
, we
, you
или they
, или какая-либо другая вещь, представляющая множественность. В этом случае, вы все равно скажете, что responds_to?
более естественен, чем respond_to?
? Чтобы сохранить общность, лучше назвать метод как можно более общим. Вместо того, чтобы называть метод у третьего лица сингулярным, имеет смысл называть его в инфинитивной форме по умолчанию, до бесконечности, которая также используется в словарях.