Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
什么是「;关于;ruby中的关键字?_Ruby - Fatal编程技术网

什么是「;关于;ruby中的关键字?

什么是「;关于;ruby中的关键字?,ruby,Ruby,我是一名学习ruby的学生,我不确定“on”在这段代码中的作用 比如说, on :channel do |m| @users[m.user.nick] = Seen.new(m.user.nick, m.channel, m.message, Time.new) end 有人能解释一下吗?on是Cinch.Bot上的一个方法:它不是一个关键字,而是一个在刚刚创建的Cinch::Bot对象上调用的简单实例方法。要传递给Cinch::Bot.new的块将根据该新对象()进行计算。这是一个称为

我是一名学习ruby的学生,我不确定“on”在这段代码中的作用

比如说,

on :channel do |m|
  @users[m.user.nick] = Seen.new(m.user.nick, m.channel, m.message, Time.new)
end

有人能解释一下吗?

on
Cinch.Bot
上的一个方法:

它不是一个关键字,而是一个在刚刚创建的
Cinch::Bot
对象上调用的简单实例方法。要传递给
Cinch::Bot.new
的块将根据该新对象()进行计算。这是一个称为“DSL”(领域特定语言)的巧妙技巧:它看起来像神奇的关键字或全局方法,但实际上只是在普通对象上调用的方法

看起来上的
是在中定义的

代码可以这样编写:

bot = Cinch::Bot.new
bot.on :channel do |m|
  ...
end

最好是内联复制代码,而不是外部链接,尤其是到一个存储库中,在那里代码会定期更改。这显然是一种方法,而不是关键字。