Ruby中的"on"关键字是什么?

3

最好将代码内联复制,而不是外部链接,特别是到一个代码经常更改的存储库。 - chrylis -cautiouslyoptimistic-
这显然是一个方法,而不是关键字。 - SwiftMango
2个回答

5
这不是一个关键词,而是在刚刚创建的 Cinch::Bot 对象上调用的简单实例方法。 传递给 Cinch::Bot.new 的块针对该新对象进行评估(https://github.com/cinchrb/cinch/blob/master/lib/cinch/bot.rb#L363)。 这是一种称为“DSL”(特定领域语言)的巧妙技巧:它看起来像是魔术关键字或全局方法,但实际上只是在普通对象上调用的方法。
看起来,onhttps://github.com/cinchrb/cinch/blob/master/lib/cinch/bot.rb#L188中定义。
代码也可以写成这样:
bot = Cinch::Bot.new
bot.on :channel do |m|
  ...
end


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接