Bird
Raised Fist0
Rubyprogramming~20 mins

Block parameters in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Block Parameters Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of block parameters with multiple variables
What is the output of this Ruby code?
Ruby
def test
  yield(1, 2)
end

result = []
test do |a, b|
  result << a + b
end

puts result.first
A2
B1
Cnil
D3
Attempts:
2 left
💡 Hint
Remember that block parameters receive values passed by yield in order.
❓ Predict Output
intermediate
2:00remaining
Block parameters with array destructuring
What will this Ruby code print?
Ruby
def example
  yield([10, 20])
end

example do |(x, y)|
  puts x * y
end
A10
B1020
C200
DError
Attempts:
2 left
💡 Hint
The block parameter uses parentheses to destructure the array.
❓ Predict Output
advanced
2:00remaining
Block parameters with default values
What is the output of this Ruby code?
Ruby
def call_block
  yield(5)
end

call_block do |a, b = 10|
  puts a + b
end
A15
BError
C5
D10
Attempts:
2 left
💡 Hint
Check how default values work in block parameters when fewer arguments are passed.
❓ Predict Output
advanced
2:00remaining
Block parameters with splat operator
What will this Ruby code output?
Ruby
def run_block
  yield(1, 2, 3)
end

run_block do |a, *rest|
  puts rest.sum + a
end
AError
B6
C3
D5
Attempts:
2 left
💡 Hint
The splat operator collects remaining arguments into an array.
❓ Predict Output
expert
3:00remaining
Block parameters with nested destructuring and default values
What is the output of this Ruby code?
Ruby
def complex
  yield([1, 2], 3)
end

complex do |(a, b = 5), c|
  puts a + b + c
end
A6
B7
CError
D8
Attempts:
2 left
💡 Hint
Look carefully at how default values apply inside nested destructuring.

Practice

(1/5)
1.

What are block parameters in Ruby?

Choose the best description.

easy
A. Variables inside | | that receive values passed to the block.
B. Methods that define how a block works.
C. Special keywords to start a block.
D. Constants used only outside blocks.

Solution

  1. Step 1: Understand block parameters role

    Block parameters are variables placed inside | | after do or { to receive values passed into the block.
  2. Step 2: Compare options with definition

    Only Variables inside | | that receive values passed to the block. correctly describes block parameters as variables inside | | that get values passed to the block.
  3. Final Answer:

    Variables inside | | that receive values passed to the block. -> Option A
  4. Quick Check:

    Block parameters = variables inside | | [OK]
Hint: Block parameters are always inside | | after do or { [OK]
Common Mistakes:
  • Confusing block parameters with methods
  • Thinking block parameters are keywords
  • Assuming block parameters are constants
2.

Which of the following is the correct syntax for block parameters in Ruby?

array.each do ?
easy
A. [item] puts item
B. (item) puts item
C. |item| puts item
D. {item} puts item

Solution

  1. Step 1: Recall block parameter syntax

    Block parameters are placed inside vertical bars | | after do or {.
  2. Step 2: Match syntax with options

    Only |item| puts item uses |item| which is the correct syntax for block parameters.
  3. Final Answer:

    |item| puts item -> Option C
  4. Quick Check:

    Block parameters use | | [OK]
Hint: Block parameters always go inside | | after do or { [OK]
Common Mistakes:
  • Using parentheses () instead of | |
  • Using curly braces {} for parameters
  • Using square brackets [] for parameters
3.

What is the output of this Ruby code?

numbers = [1, 2, 3]
numbers.each do |n|
  puts n * 2
end
medium
A. 2 4 6
B. 1 2 3
C. Error: undefined variable n
D. nil

Solution

  1. Step 1: Understand the block parameter usage

    The block parameter n takes each element from the array numbers one by one.
  2. Step 2: Calculate output for each element

    For each n, the code prints n * 2. So outputs are 2, 4, and 6 on separate lines.
  3. Final Answer:

    2 4 6 -> Option A
  4. Quick Check:

    Each number doubled = 2,4,6 [OK]
Hint: Block parameter holds each item; multiply inside block [OK]
Common Mistakes:
  • Confusing block parameter with array variable
  • Expecting original numbers printed
  • Thinking block parameter is undefined
4.

Find the error in this Ruby code:

fruits = ['apple', 'banana']
fruits.each do fruit|
  puts fruit
end
medium
A. Block parameter should be in parentheses
B. Missing closing | after block parameter
C. No error, code runs fine
D. Missing opening | before block parameter

Solution

  1. Step 1: Check block parameter syntax

    Block parameters must be enclosed inside vertical bars | |. Here, only the closing bar is present.
  2. Step 2: Identify missing part

    The opening | before fruit is missing, causing a syntax error.
  3. Final Answer:

    Missing opening | before block parameter -> Option D
  4. Quick Check:

    Block parameters need both | | [OK]
Hint: Block parameters always need both | at start and end [OK]
Common Mistakes:
  • Forgetting the opening |
  • Using parentheses instead of | |
  • Assuming code runs without |
5.

Given this code, what will be the output?

pairs = [[1, 2], [3, 4], [5, 6]]
pairs.each do |a, b|
  puts a + b
end
hard
A. [1, 2] [3, 4] [5, 6]
B. 3 7 11
C. Error: wrong number of block parameters
D. 1 3 5

Solution

  1. Step 1: Understand multiple block parameters

    The block parameters a and b receive each inner array's two elements separately.
  2. Step 2: Calculate sum for each pair

    For each pair, the code prints the sum: 1+2=3, 3+4=7, 5+6=11.
  3. Final Answer:

    3 7 11 -> Option B
  4. Quick Check:

    Sum of pairs = 3,7,11 [OK]
Hint: Use multiple block parameters to unpack arrays inside each [OK]
Common Mistakes:
  • Expecting array printed instead of sum
  • Thinking block parameters can't unpack arrays
  • Assuming syntax error with two parameters
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard