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 |