2013-08-20 85 views
0

我讀到以下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行中的:starting:finishing是什麼意思,第3行中的:starting=>和第4行中的:finishing=>是什麼意思。甚至很難找到谷歌的關鍵字。

有人可以向我解釋1,2,3,4行嗎?如果你可以參考一些官方文件,那會更好。

回答

3

procsHashprocs[:starting]是指用於鍵:starting的值,這是由設置:

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

的方法調用等效於:

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

:string相當於"starting"? – TieDad

+0

@EvanLi':字符串是符號,''開始''是字符串。 –

+0

爲什麼使用符號作爲散列鍵而不是字符串? – TieDad

1

但我不知道是什麼:啓動和:第1行& 2精加工意味着

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

what:starting => in line 3 and:finishing => in line 4 mean。

您正在通過方法callbacks發送一個散列對象作爲參數。

在這裏閱讀Hash