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 |