0

我阅读了以下红宝石代码:

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 行和第 2 行中的 and 是什么意思,:starting第3 行和第 4 行中的意思是什么。甚至很难找到谷歌的关键字。:finishing:starting=>:finishing=>

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

4

2 回答 2

3

procs是 a Hashprocs[:starting]指的是 key 的值:starting,由以下方式设置:

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

方法调用等价于:

h = {}
h[:starting] = Proc.new { puts "Starting" }
h[:finishing] = Proc.new { puts "Finishing" }
callbacks(h)
于 2013-08-20T08:20:07.867 回答
1

但我不知道第 1 行和第 2 行的 :starting 和 :finishing 是什么意思

:starting并且:finishing是 hash 的哈希键procs

第 3 行中的 :starting=> 和第 4 行中的 :finishing=> 是什么意思。

您正在通过方法发送一个 Hash 对象作为参数callbacks

在这里阅读Hash

于 2013-08-20T08:19:50.077 回答