0
0
Rubyprogramming~20 mins

Why blocks are fundamental to Ruby - Challenge Your Understanding

Choose your learning style9 modes available
Challenge - 5 Problems
🎖️
Ruby Blocks Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
Predict Output
intermediate
2:00remaining
What is the output of this Ruby code using a block?
Consider the following Ruby code that uses a block with the method times. What will it print?
Ruby
3.times do |i|
  puts i * 2
end
A
1
2
3
B
0
2
4
C
0
1
2
D
2
4
6
Attempts:
2 left
💡 Hint
Remember that the block variable i starts at 0 and goes up to one less than the number.
🧠 Conceptual
intermediate
1:30remaining
Why are blocks important in Ruby?
Which of the following best explains why blocks are fundamental to Ruby?
ABlocks are a way to write comments that the interpreter ignores.
BBlocks are used only for defining classes and modules in Ruby.
CBlocks replace variables and constants in Ruby programs.
DBlocks allow methods to accept chunks of code to be executed later, enabling flexible iteration and callbacks.
Attempts:
2 left
💡 Hint
Think about how blocks let you pass code to methods like each or map.
🔧 Debug
advanced
2:00remaining
What error does this Ruby code raise?
Look at this Ruby code using a block. What error will it raise when run?
Ruby
def greet
  yield
  yield('friend')
end

greet do |name|
  puts "Hello, #{name}!"
end
AArgumentError: wrong number of arguments (given 0, expected 1)
BSyntaxError: unexpected keyword_end
CNoMethodError: undefined method 'yield' for main:Object
DNo error, prints 'Hello, !' and 'Hello, friend!'
Attempts:
2 left
💡 Hint
Check how many arguments the block expects and how many are passed.
📝 Syntax
advanced
1:30remaining
Which option correctly defines a method that takes a block and calls it twice?
Choose the Ruby code that defines a method twice which calls the given block two times.
A
def twice
  yield
  yield
end
B
def twice
  yield()
  yield()
end
CAll of the above
D
def twice(&block)
  block.call
  block.call
end
Attempts:
2 left
💡 Hint
Blocks can be called with yield or by passing an explicit block parameter.
🚀 Application
expert
2:30remaining
What is the output of this Ruby code using blocks and enumerators?
Analyze this Ruby code and select the exact output it produces.
Ruby
result = (1..5).map do |n|
  if n.even?
    n * 2
  else
    n
  end
end

puts result.inspect
A
[1, 4, 3, 8, 5]
B
[2, 4, 6, 8, 10]
C
[1, 2, 3, 4, 5]
D
[1, 8, 3, 16, 5]
Attempts:
2 left
💡 Hint
Remember that n.even? checks if a number is even, and map transforms each element.