我很好奇为什么Ruby的内省相关方法检查对象是否响应方法respond_to?
而不是responds_to?
这对我来说似乎总是很尴尬,但也许那是因为我习惯于{-1}}在Objective-c。
答案 0 :(得分:70)
Matz prefers第二人称单数或第三人称复数:
“responds_to?”可能会赚更多 对英语人士的感觉比 “respond_to代码?”。
也许。但我是日本人。 Ruby不是 英语。这是基本的命名规则 避免第三人称单数形式 标准库。
you = Human.new if you.respond_to?(:knock) ... end
答案 1 :(得分:8)
你怎么知道接收者总是第三人称单数?接收器可能是I
,we
,you
或they
,或者代表多个的其他东西。在这种情况下,您是否仍然会说responds_to?
比respond_to?
更自然?为了保持通用性,最好将表单中的方法命名为尽可能通用。不是以第三人称单数命名方法,而是将其命名为默认的 to -less不定式形式,这也用在词典中。