Ruby lets you store procedures or procs, as they're called as objects, complete with their context.
# One way is to invoke new on the Proc class;
# another way is to call either the lambda or proc method from Kernel.
# calling lambda or proc is preferred over Proc.new because lambda and proc do parameter checking.
#!/usr/bin/env ruby
count = Proc.new { [1,2,3,4,5].each do |i| print i end; puts }
your_proc = lambda { puts "Lurch: 'You rang?'" }
my_proc = proc { puts "Morticia: 'Who was at the door, Lurch?'" }
# What kind of objects did you just create?
puts count.class, your_proc.class, my_proc.class
# Calling all procs
count.call
your_proc.call
my_proc.call
Related examples in the same category