 
 This page contains automated test results for code from O'Reilly's Ruby Cookbook. If this code looks interesting or useful, you might want to buy the whole book.
| Invoking Blocks | ||
|---|---|---|
| Code | Expected | Actual | 
| block = { |x| puts x }                 # WRONG | SyntaxError: compile error ... | SyntaxError: compile error
(irb):1: parse error, unexpected '|', expecting '}'
block = { |x| puts x }                 # WRONG
           ^
(irb):1: parse error, unexpected tIDENTIFIER, expecting kDO or '{' or '('
block = { |x| puts x }                 # WRONG
                    ^
	from (irb):1
 | 
| block = lambda { |x| puts x }          # RIGHT
block.call "Hello World!"  | Hello World! | Hello World! | 
| def my_lambda(&block)
  block
end
b = my_lambda { puts "Hello World My Way!" }
b.call | Hello World My Way! | Hello World My Way! | 
| b.class | Proc | Proc | 
| block = Proc.new { |x| puts x }
block = proc { |x| puts x }
block = lambda { |x| puts x }
add_lambda = lambda { |x,y| x + y }
add_lambda.call(4) | ArgumentError: wrong number of arguments (1 for 2) ... | ArgumentError: wrong number of arguments (1 for 2) from (irb):13 from (irb):14 | 
| add_lambda.call(4,5,6) | ArgumentError: wrong number of arguments (3 for 2) ... | ArgumentError: wrong number of arguments (3 for 2) from (irb):13 from (irb):15 | 
| add_procnew = Proc.new { |x,y| x + y }
add_procnew.call(4) | TypeError: nil can't be coerced into Fixnum ... | TypeError: nil can't be coerced into Fixnum from (irb):16:in `+' from (irb):16 from (irb):17 | 
| add_procnew.call(4,5,6) | 9 | 9 |