В указанном вами фрагменте кода вертикальные линии являются частью синтаксиса определения блока.Таким образом, { |x| print x }
является блоком кода, предоставляемым в качестве параметра для метода upto
, 9
также является параметром, передаваемым в метод upto
.
Блок кода представлен lambda
или объектом класса Proc
в Ruby.lambda
в данном случае является анонимной функцией.
Итак, просто проведем аналогию с синтаксисом определения функции,
def function_name(foo, bar, baz)
# Do something
end
{ # def function_name (Does not need a name, since its anonymous)
|x| # (foo, bar, baz)
print x # # Do Something
} # end