2013-08-20 4 views
0

я прочитал следующий рубинового код:Как понять этот код 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 

Я думаю, что это доза. Но я не знаю, что :starting и :finishing в строке 1 & 2 означает, а что :starting=> в строке 3 и :finishing=> в строке 4 означает. Трудно найти ключевое слово для google.

Может ли кто-нибудь объяснить строку 1,2,3,4 мне? Если вы можете обратиться к официальному документу, это будет еще лучше.

ответ

3

procs является Hash, procs[:starting] относится к значению для ключа :starting, который устанавливается:

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

вызова метода эквивалентен:

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

Is :string эквивалентно "starting"? – TieDad

+0

@EvanLi ': string' является символом и' 'start" 'является строкой. –

+0

Зачем использовать символ как хэш-ключ, а не строку? – TieDad

1

Но я не знаю, что: запуск и: отделка в строке 1 & 2 означают

:starting и :finishing являются хэш-ключи хэша procs.

что: начало => в строке 3 и: отделка => в строке 4 означает.

Вы отправляете объект Hash в качестве аргумента методом callbacks.

Прочитать здесь Hash.

Смежные вопросы