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

时间:2011-03-12 04:25:40

标签: ruby naming-conventions introspection

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

这对我来说似乎总是很尴尬,但也许那是因为我习惯于{-1}}在Objective-c。

2 个答案:

答案 0 :(得分:70)

Matz prefers第二人称单数或第三人称复数:

  

“responds_to?”可能会赚更多   对英语人士的感觉比   “respond_to代码?”。

     

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

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

答案 1 :(得分:8)

你怎么知道接收者总是第三人称单数?接收器可能是Iweyouthey,或者代表多个的其他东西。在这种情况下,您是否仍然会说responds_to?respond_to?更自然?为了保持通用性,最好将表单中的方法命名为尽可能通用。不是以第三人称单数命名方法,而是将其命名为默认的 to -less不定式形式,这也用在词典中。