From: Gregory Brown Date: 2007-06-24T07:12:20+09:00 Subject: Ruby 1.9 : What is the use for Proc#yield I'm reading through Mauricio's list of changes[0] to Ruby 1.9 and having trouble with understanding the point of Proc#yield --- Invokes the block, setting the block's parameters to the values in params in the same manner the yield statement does. a_proc.yield(9, 1, 2, 3) #=> [9, 18, 27] a_proc.yield([9, 1, 2, 3]) #=> [9, 18, 27] a_proc = Proc.new {|a,b| a} a_proc.yield(1,2,3) # => [1] --- It seems like this is the same as Proc#[] or Proc#call >> VERSION => "1.8.4" >> a_proc = Proc.new {|a, *b| b.collect {|i| i*a }} => # >> a_proc[9,1,2,3] => [9, 18, 27] >> a_proc[[9,1,2,3]] => [9, 18, 27] >> a_proc = Proc.new { |a,b| a } => # >> a_proc[1,2,3] => 1 Mauricio says "Proc#yield was added (also NilClass#yield which raises a LocalJumpError so you can use it on &block)." The best 'feature' I can think of is that this lets you do def something(&block) block.yield(1,2,3) rescue LocalJumpError puts "was expected a block" end But I'm not sure I'm convinced of how cool that is. Am I missing something?