web-dev-qa-db-ja.com

なぜRubyはrespond_toの代わりにrespond_to?を使用するのですか?

オブジェクトがメソッドに応答するかどうかをチェックするRubyのイントロスペクション関連のメソッドが、respond_to?ではなくresponds_to?である理由に興味があります。

それはいつも私には厄介に思えますが、おそらくそれは私がObjective-cでrespondsToSelectorに慣れているためです。

41
Nick

Matz 優先 二人称単数形または三人称複数形:

「responds_to?」おそらく「respond_to?」よりも英語を話す人にとって意味があります。

多分。でも私は日本人です。 Rubyは英語ではありません。標準ライブラリで第三者の単数形を避けるための基本的な命名規則です。

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

受信者が常に第三者の単数であることをどうやって知っていますか?受信者は、Iweyouthey、または複数を表すその他のものである可能性があります。その場合でも、responds_to?respond_to?よりも自然だと思いますか?一般性を維持するために、できるだけ一般的な形式でメソッドに名前を付けることをお勧めします。サードパーソン単数でメソッドに名前を付けるよりも、デフォルトのto-辞書でも使用される不定詞の少ない形式でメソッドに名前を付ける方が理にかなっています。

8
sawa