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.
| Binding a Block Argument to a Variable | ||
|---|---|---|
| Code | Expected | Actual |
def repeat(n)
n.times { yield } if block_given?
end
repeat(2) { puts "Hello." } |
Hello. Hello. |
Hello. Hello. |
def repeat(n, &block)
n.times { block.call } if block
end
repeat(2) { puts "Hello." } |
Hello. Hello. |
Hello. Hello. |
def repeat(n, &block)
n.times { yield } if block
end
repeat(2) { puts "Hello." } |
Hello. Hello. |
Hello. Hello. |
def biggest(collection, &block)
block ? collection.select(&block).max : collection.max
end
array = [1, 2, 3, 4, 5]
biggest(array) {|i| i < 3} |
2 | 2 |
biggest(array) {|i| i != 5 } |
4 | 4 |
biggest(array) |
5 | 5 |
def pick_random_numbers(min, max, limit)
limit.times { yield min+rand(max+1) }
end
def lottery_style_numbers(&block)
pick_random_numbers(1, 49, 6, &block)
end
lottery_style_numbers { |n| puts "Lucky number: #{n}" } |
Lucky number: 20 Lucky number: 39 Lucky number: 41 Lucky number: 10 Lucky number: 41 Lucky number: 32 |
Lucky number: 20 Lucky number: 39 Lucky number: 41 Lucky number: 10 Lucky number: 41 Lucky number: 32 |
def invoke_on_each(*args, &block)
args.each { |arg| yield arg }
end
invoke_on_each(1, 2, 3, 4) { |x| puts x ** 2 } |
1 4 9 16 |
1 4 9 16 |