Парсер CRuby (parse.y
) вызывает его block_param_def
( определение параметров блока ). В конце концов, вы определяете параметры блока.
В «Языке программирования Ruby» Дэвида Фланагана и Юкихиро Мацумото это также называется параметрами блока (5.4.1 Синтаксис блока, страница141):
Блоки могут быть параметризованы так же, как и методы. Параметры блока разделяются запятыми и разделяются парой символов вертикальной черты (|
) […]
A аргумент блока будет &blk
, как в def foo(&blk)
где blk
будет ссылаться на блок, который обычно является анонимным, если он передается как часть вызова метода. Важное отличие, которое книга также упоминает в сноске (6.4.5 Block Arguments, стр. 190):
- Мы используем термин «аргумент блока» вместо «параметра блока» для параметров методас префиксом
&
. Это связано с тем, что фраза «параметр блока» относится к списку параметров (например, |x|
) самого блока.
Возможно, это немного странно и не совсем логично в качестве аргументовblock (например, 1
, 2
и 3
в вашем примере) также можно назвать аргументами блока.