Почему Ruby использует response_to? вместо откликается? - PullRequest
40 голосов
/ 12 марта 2011

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

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

Ответы [ 2 ]

70 голосов
/ 12 марта 2011

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

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

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

  you = Human.new
  if you.respond_to?(:knock)
    ...
  end
8 голосов
/ 12 марта 2011

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

...