为什么Ruby使用respond_to? 而不是responds_to?

我很好奇为什么Ruby的内省相关的方法来检查一个对象是否响应方法是respond_to? 而不是responds_to?

它总是看起来很尴尬,但也许这是因为我习惯了objective-c中的respondsToSelector

Matz 喜欢第二人称单数或第三人称复数:

“responds_to?” 对于说英语的人来说可能比“回应?”更有意义。

也许。 但我是日本人。 Ruby不是英语。 标准库中避免第三人称单数forms是基本的命名规则。

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

你怎么知道接收器总是第三人称单数? 接收者有可能是Iweyou或者they ,或者其他代表多个的东西。 在这种情况下,你会不会说responds_to?respond_to?更自然respond_to? ? 为了保持一般性,最好尽可能以一般forms来命名方法。 而不是以第三人称单数命名一个方法,更有意义的是将其命名为默认的,无用的不定式forms,这也在字典中使用。