Blocks and Methods
Block Parameters
Blocks receive parameters and can make local calculations for each yielded value.
block parameter
Names between vertical bars receive values from the method that is running the block.
Block Parameters
block_parameters.rb
Replay: real traced execution (multi-file project)
numbers = [2, 4, 6]
multiplier = 3
numbers.each do |number|
product = number * multiplier
puts "#{number}x#{multiplier}=#{product}"
end
numbers = [2, 4, 6]
multiplier = 2
numbers.each do |number|
product = number * multiplier
puts "#{number}x#{multiplier}=#{product}"
end
numbers = [2, 4, 6]
multiplier = 5
numbers.each do |number|
product = number * multiplier
puts "#{number}x#{multiplier}=#{product}"
end
numbers ← [2, 4, 6], multiplier ← 3
1numbers→ [2, 4, 6] = [2, 4, 6]2multiplier→ 3 = 3 #@multiplier=2, 534numbers[2, 4, 6].each do |number|5 product = number * multiplier6 puts "#{number}x#{multiplier}=#{product}"7endproduct ← 6
pass 1 of 34numbers.each do |number2|5 product→ 6 = number2 * multiplier36 puts "#{number2}x#{multiplier3}=#{product6}"7endoutput2x3=6All 3 passes — pass 1 is the card above pass numbernumbersproduct1 2 — 6 2 4 — 12 3 6 [2, 4, 6] 18
numbers ← [2, 4, 6], multiplier ← 2
1numbers→ [2, 4, 6] = [2, 4, 6]2multiplier→ 2 = 234numbers[2, 4, 6].each do |number|5 product = number * multiplier6 puts "#{number}x#{multiplier}=#{product}"7endproduct ← 4
pass 1 of 34numbers.each do |number2|5 product→ 4 = number2 * multiplier26 puts "#{number2}x#{multiplier2}=#{product4}"7endoutput2x2=4All 3 passes — pass 1 is the card above pass numbernumbersproduct1 2 — 4 2 4 — 8 3 6 [2, 4, 6] 12
numbers ← [2, 4, 6], multiplier ← 5
1numbers→ [2, 4, 6] = [2, 4, 6]2multiplier→ 5 = 534numbers[2, 4, 6].each do |number|5 product = number * multiplier6 puts "#{number}x#{multiplier}=#{product}"7endproduct ← 10
pass 1 of 34numbers.each do |number2|5 product→ 10 = number2 * multiplier56 puts "#{number2}x#{multiplier5}=#{product10}"7endoutput2x5=10All 3 passes — pass 1 is the card above pass numbernumbersproduct1 2 — 10 2 4 — 20 3 6 [2, 4, 6] 30
Follow the Parameters
numbersstarts as2,4, and6.multiplierstarts as3.- Each block run receives one number.
- The block multiplies that number by
3and prints the equation. | number | multiplier | product | output | | --- | --- | --- | --- | | 2 | 3 | 6 | 2x3=6 | | 4 | 3 | 12 | 4x3=12 | | 6 | 3 | 18 | 6x3=18 |
Exercise: block_parameters.rb
Reproduce the three default equations, then use the pinned multiplier variants to predict the products for 2 and 5.