я могу передать аргументы функции, как это:Являются ли блоки переданными в качестве аргументов?
func 1, 2, 3
или я могу использовать скобки, как:
func(1, 2, 3)
Позже я узнал о функциях как list.each
, которые я прохожу (не уверен, если это то, что действительно происходит) блок для работы по каждому элементу:
list.each {|x| puts x}
Я предположил, что это просто передало блок в качестве аргумента для each
функция, но это, кажется, не так, потому что:
list.each({|x| puts x})
не работает.
Я понял это, когда показано:
5.upto(9) {|x| puts x}
Который не имеет смысла, если блок просто аргумент.
Что здесь происходит? Любой ресурс, на который вы можете указать мне, чтобы помочь объяснить это, и, возможно, другие структурные вещи, которые не сразу очевидны?
Это может быть полезной отправной точкой: [http://www.robertsosinski.com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas/](http://www.robertsosinski ,com/2008/12/21/understanding-ruby-blocks-procs-and-lambdas /) – Chris
Это специальный синтаксис, созданный специально для передачи блока функции. Для каждого вызова функции вы можете пройти один блок за пределами списка обычных аргументов. Блок по-прежнему добавляется к списку аргументов в контексте вызываемой функции. – meagar
@Matt - Поскольку вы изучаете Ruby, посмотрите: http://www.codecademy.com/tracks/ruby - Действительно хороший ресурс для тех, кто хочет изучить основные основы рубинового языка – David