Мне любопытно, почему метод Ruby, связанный с самоанализом, чтобы проверить, отвечает ли объект методу, равен respond_to? вместо responds_to?
Мне всегда это кажется неуклюжим, но, может быть, это потому, что я привык к respondsToSelector в Objective-C.
Ответ 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 инфинитива, которая также используется в словарях.