如何理解这个ruby代码?

时间:2013-08-20 08:17:40

标签: ruby

我读了以下ruby代码:

def callbacks(procs)
  procs[:starting].call     # line 1
  puts "Still going"
  procs[:finishing].call    # line 2
end

callbacks(:starting => Proc.new { puts "Starting" },   # line 3
          :finishing => Proc.new { puts "Finishing" }) # line 4

我可以猜出它的剂量。但我不知道第1行和第1行中的:starting:finishing是什么2表示,第3行中的:starting=>和第4行中的:finishing=>表示。甚至很难找到谷歌的关键词。

有人可以向我解释第1,2,3,4行吗?如果您可以参考一些官方文档,那将会更好。

2 个答案:

答案 0 :(得分:3)

procsHashprocs[:starting]是指键:starting的值,由以下人员设置:

:starting => Proc.new { puts "Starting" }

方法调用等同于:

h = {}
h[:starting] = Proc.new { puts "Starting" }
h[:finishing] = Proc.new { puts "Finishing" }
callbacks(h)

答案 1 :(得分:1)

  

但我不知道:开始和:在第1行和第1行完成2意味着

:starting:finishing是哈希procs的哈希键。

  

what:starting =>在第3行和:finish =>在第4行意味着。

您正通过方法callbacks发送哈希对象作为参数。

请阅读Hash