It is a control structure that lets you compare a value against multiple conditions and execute code based on the first matching condition.
Click to reveal answer
beginner
How do you write a simple case/when statement in Ruby?
Use case followed by the value, then multiple when clauses for conditions, and else for default. Example:
case x
when 1
puts "One"
when 2
puts "Two"
else
puts "Other"
end
Click to reveal answer
intermediate
Can a when clause check multiple values at once?
Yes! You can separate values with commas to check if the case value matches any of them. Example:
case x
when 1, 3, 5
puts "Odd number"
end
Click to reveal answer
intermediate
What happens if no when condition matches and there is no else clause?
The case statement returns nil and no code inside the when blocks runs.
Click to reveal answer
intermediate
How is case/when different from multiple if/elsif statements?
Both control flow choices check conditions, but case/when is cleaner when comparing one value against many options, making code easier to read.
Click to reveal answer
What keyword starts a case statement in Ruby?
Awhen
Bcase
Cif
Dswitch
✗ Incorrect
The case keyword starts the case statement.
How do you specify multiple values in a single when clause?
AUse parentheses
BUse multiple <code>when</code> lines
CUse semicolons
DSeparate values with commas
✗ Incorrect
Separate values with commas to check if the case value matches any of them.
What does the else clause do in a case statement?
ARuns if no <code>when</code> matches
BRuns before any <code>when</code>
CEnds the case statement
DIs required for case to work
✗ Incorrect
The else clause runs if no when condition matches.
What value does a case statement return if no conditions match and no else is given?
A0
Bfalse
Cnil
DAn error
✗ Incorrect
It returns nil and does not run any code inside when blocks.
Which is a benefit of using case/when over multiple if/elsif?
ACleaner code when checking one value against many options
BRuns faster always
CAllows complex boolean expressions
DRequires less typing for all conditions
✗ Incorrect
case/when is cleaner and easier to read when comparing one value to many options.
Explain how a case/when statement works in Ruby and give a simple example.
Think about how you check one value against many choices.
You got /4 concepts.
Describe how you can check multiple values in a single when clause and why that might be useful.
Imagine you want to run the same code for several possible values.
You got /3 concepts.
Practice
(1/5)
1.
What does the case/when statement do in Ruby?
easy
A. It chooses which code to run based on matching a value.
B. It repeats code multiple times.
C. It defines a new method.
D. It creates a new variable.
Solution
Step 1: Understand the purpose of case/when
The case/when statement compares a value to different options to decide which code to run.
Step 2: Compare with other options
Repeating code is done by loops, defining methods uses def, and variables are created by assignment, so these are incorrect.
Final Answer:
It chooses which code to run based on matching a value. -> Option A
Quick Check:
case/when selects code by value match [OK]
Hint: Remember: case/when picks code by matching values [OK]
Common Mistakes:
Confusing case/when with loops
Thinking case/when defines methods
Believing case/when creates variables
2.
Which of the following is the correct syntax for a case/when statement in Ruby?
case x
when 1
puts "One"
when 2
puts "Two"
else
puts "Other"
end
easy
A. case x
when 1
puts "One"
when 2
puts "Two"
else
puts "Other"
end
B. case x {
when 1:
puts "One"
when 2:
puts "Two"
else:
puts "Other"
}
C. switch(x) {
case 1:
puts "One"
case 2:
puts "Two"
default:
puts "Other"
}
D. if x == 1 then puts "One" elsif x == 2 then puts "Two" else puts "Other" end
Solution
Step 1: Check Ruby case/when syntax
Ruby uses case followed by when clauses and ends with end. No braces or colons are used.
Step 2: Compare options
case x
when 1
puts "One"
when 2
puts "Two"
else
puts "Other"
end matches Ruby syntax exactly. Options B and C use braces and colons like other languages. if x == 1 then puts "One" elsif x == 2 then puts "Two" else puts "Other" end is an if/elsif, not case/when.
Final Answer:
case x
when 1
puts "One"
when 2
puts "Two"
else
puts "Other"
end -> Option A
Quick Check:
Ruby case/when uses no braces or colons [OK]
Hint: Ruby case/when uses no braces or colons, just end [OK]
Common Mistakes:
Using braces or colons like other languages
Confusing case/when with switch/case from other languages
Using if/elsif instead of case/when
3.
What is the output of this Ruby code?
grade = 'B'
case grade
when 'A'
puts "Excellent"
when 'B', 'C'
puts "Good"
when 'D'
puts "Pass"
else
puts "Fail"
end
medium
A. Fail
B. Excellent
C. Pass
D. Good
Solution
Step 1: Identify the value of grade
The variable grade is set to 'B'.
Step 2: Match grade in case/when
The when 'B', 'C' line matches 'B', so it runs puts "Good".
Final Answer:
Good -> Option D
Quick Check:
grade 'B' matches when 'B', 'C' [OK]
Hint: Check all values in when line, including multiple matches [OK]
Common Mistakes:
Only checking first value in when list
Confusing else output
Ignoring multiple values in one when
4.
Find the error in this Ruby code snippet:
score = 85
case score
when 90..100
puts "A"
when 80..89
puts "B"
when 70..79
puts "C"
else
puts "F"
end
Why does it not print "B" for score 85?
medium
A. Ranges in when must be strings, not numbers.
B. The case statement compares score with ranges incorrectly; use case with when and ===.
C. The code is correct; it will print "B" as expected.
D. The ranges overlap and cause confusion.
Solution
Step 1: Understand how case/when works with ranges
Ruby's case/when uses the === operator, which works with ranges to check if a value is inside.
Step 2: Check the given score and ranges
Score 85 falls inside 80..89, so puts "B" will run correctly.
Final Answer:
The code is correct; it will print "B" as expected. -> Option C
Quick Check:
Ranges work with case/when using === [OK]
Hint: Ranges work naturally in when clauses with case [OK]
Common Mistakes:
Thinking ranges must be strings
Believing case/when can't handle ranges
Assuming overlapping ranges cause errors here
5.
You want to write a Ruby case/when statement that prints "Weekend" for Saturday and Sunday, "Weekday" for Monday to Friday, and "Invalid" for any other input. Which code correctly does this?
hard
A. case day
when 'Saturday', 'Sunday'
puts "Weekend"
when 'Monday'..'Friday'
puts "Weekday"
else
puts "Invalid"
end
B. case day
when 'Saturday', 'Sunday'
puts "Weekend"
when 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'
puts "Weekday"
else
puts "Invalid"
end
C. case day
when 'Saturday'..'Sunday'
puts "Weekend"
when 'Monday'..'Friday'
puts "Weekday"
else
puts "Invalid"
end
D. case day
when ['Saturday', 'Sunday']
puts "Weekend"
when ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
puts "Weekday"
else
puts "Invalid"
end
Solution
Step 1: Understand how to list multiple values in when
Use commas to separate multiple values in one when line, like when 'Saturday', 'Sunday'.
Step 2: Check each option
case day
when 'Saturday', 'Sunday'
puts "Weekend"
when 'Monday'..'Friday'
puts "Weekday"
else
puts "Invalid"
end incorrectly uses a range of strings 'Monday'..'Friday' which does not work as expected for days. case day
when ['Saturday', 'Sunday']
puts "Weekend"
when ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday']
puts "Weekday"
else
puts "Invalid"
end uses arrays in when, which does not match values correctly. case day
when 'Saturday'..'Sunday'
puts "Weekend"
when 'Monday'..'Friday'
puts "Weekday"
else
puts "Invalid"
end uses string ranges like 'Saturday'..'Sunday' which is not meaningful for days. case day
when 'Saturday', 'Sunday'
puts "Weekend"
when 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'
puts "Weekday"
else
puts "Invalid"
end correctly lists each weekday separately with commas.
Final Answer:
case day
when 'Saturday', 'Sunday'
puts "Weekend"
when 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday'
puts "Weekday"
else
puts "Invalid"
end -> Option B
Quick Check:
Use commas for multiple values in when [OK]
Hint: Use commas, not ranges or arrays, for multiple when values [OK]
Common Mistakes:
Using ranges of strings for days
Using arrays inside when clauses
Trying to use string ranges that don't work
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.