如何理解这个ruby代码?

如何理解这个ruby代码?,ruby,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 "Fini

我阅读了以下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行和第2行的开始和结束是什么意思,第3行的开始和第4行的结束是什么意思。甚至很难找到谷歌的关键词

有人能给我解释一下第1、2、3、4行吗?如果你可以参考一些官方文件,那就更好了

但我不知道:在第1行和第2行开始和结束意味着什么

:start
:finishing
是哈希
过程的哈希键

什么:第3行开始=>和第4行结束=>的意思

通过方法
回调
发送散列对象作为参数

读这里

但我不知道:在第1行和第2行开始和结束意味着什么

:start
:finishing
是哈希
过程的哈希键

什么:第3行开始=>和第4行结束=>的意思

通过方法
回调
发送散列对象作为参数

请阅读此处。

procs
是一个,
procs[:starting]
指的是键
:starting
的值,该值由以下设置:

:starting => Proc.new { puts "Starting" }
方法调用相当于:

h = {}
h[:starting] = Proc.new { puts "Starting" }
h[:finishing] = Proc.new { puts "Finishing" }
callbacks(h)
procs
是一个,
procs[:starting]
是指键
:starting
的值,该值由以下设置:

:starting => Proc.new { puts "Starting" }
方法调用相当于:

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

:string
等同于
“starting”
?@EvanLi
:string
是符号,
“starting”
是字符串。为什么使用符号作为散列键而不是字符串?在这种情况下,首选@EvanLi符号,但您可以使用任何对象。但是,它们不一样-如果方法需要符号,则传递字符串将不起作用。@Evali今天还问:string是否相当于
“starting”
?@Evali
:string
是符号,而
“starting”
是字符串。为什么使用符号作为哈希键而不是字符串?在这种情况下,首选@Evali符号,但是你可以使用任何对象。然而,它们是不同的-如果方法需要符号,传递字符串将不起作用。@EvanLi今天也问