Ruby Language Blocks and Procs and Lambdas Proc


def call_the_block(&calling);; end

its_a = proc do |*args|
  puts "It's a..." unless args.empty?
  "beautiful day"

puts its_a       #=> "beautiful day"
puts  #=> "beautiful day"
puts its_a[1, 2] #=> "It's a..." "beautiful day"

We've copied the method call_the_block from the last example. Here, you can see that a proc is made by calling the proc method with a block. You can also see that blocks, like methods, have implicit returns, which means that procs (and lambdas) do too. In the definition of its_a, you can see that blocks can take splat arguments as well as normal ones; they're also capable of taking default arguments, but I couldn't think of a way to work that in. Lastly, you can see that it's possible to use multiple syntaxes to call a method -- either the call method, or the [] operator.