Bird
Raised Fist0
Rubyprogramming~20 mins

Conditional assignment (||=) in Ruby - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Ruby Conditional Assignment Master
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 ||= operator?
Consider the following Ruby code snippet. What will be printed when it runs?
Ruby
value = nil
value ||= 10
puts value
A0
Bnil
CError
D10
Attempts:
2 left
💡 Hint
Remember ||= assigns the value only if the variable is nil or false.
❓ Predict Output
intermediate
2:00remaining
What will be the value of variable after conditional assignment?
What is the value of count after this code runs?
Ruby
count = 5
count ||= 10
puts count
Anil
B10
C5
DError
Attempts:
2 left
💡 Hint
The ||= operator does not overwrite if the variable is already truthy.
🔧 Debug
advanced
2:00remaining
Why does this code raise an error with ||= operator?
This Ruby code raises an error. Which option explains the cause?
Ruby
def example
  @var ||= 5
  @var = nil
  @var ||= 10
end
example
AThe code runs fine and returns 10
BThe code raises a SyntaxError due to misplaced ||= operator
CThe second ||= is ignored because @var is nil
DUsing ||= on an uninitialized instance variable causes a NameError
Attempts:
2 left
💡 Hint
Instance variables default to nil if uninitialized.
🧠 Conceptual
advanced
2:00remaining
What does ||= do in Ruby?
Choose the best description of what the ||= operator does in Ruby.
AAssigns the right value only if the left variable is nil or false
BAlways assigns the right value to the left variable
CAssigns the right value only if the left variable is truthy
DAssigns the right value only if the left variable is zero
Attempts:
2 left
💡 Hint
Think about when ||= skips assignment.
❓ Predict Output
expert
2:00remaining
What is the output of this Ruby code with ||= and method calls?
What will this Ruby code print?
Ruby
def get_value
  nil
end
result = get_value ||= 100
puts result
A100
BError
Cnil
Dfalse
Attempts:
2 left
💡 Hint
Consider operator precedence and what ||= applies to here.

Practice

(1/5)
1. What does the Ruby operator ||= do when used like x ||= 10?
easy
A. Always assigns 10 to x, replacing any value
B. Assigns 10 to x only if x is true
C. Assigns 10 to x only if x is nil or false
D. Throws an error if x is already assigned

Solution

  1. Step 1: Understand the ||= operator

    The operator ||= assigns the right side value only if the left side variable is nil or false.
  2. Step 2: Apply to example x ||= 10

    If x is nil or false, it becomes 10; otherwise, it keeps its current value.
  3. Final Answer:

    Assigns 10 to x only if x is nil or false -> Option C
  4. Quick Check:

    Conditional assignment = Assign if nil/false [OK]
Hint: ||= sets value only if variable is nil or false [OK]
Common Mistakes:
  • Thinking ||= always assigns the value
  • Confusing ||= with simple assignment =
  • Assuming ||= assigns when variable is true
2. Which of the following is the correct syntax to assign 5 to variable a only if a is nil or false?
easy
A. a ||= 5
B. a =|| 5
C. a =| 5
D. a =|= 5

Solution

  1. Step 1: Identify correct operator syntax

    The correct Ruby operator for conditional assignment is ||=, not any variation with single or misplaced symbols.
  2. Step 2: Match syntax to options

    Only a ||= 5 uses ||= correctly as a ||= 5.
  3. Final Answer:

    a ||= 5 -> Option A
  4. Quick Check:

    Correct syntax = a ||= 5 [OK]
Hint: Remember ||= has two vertical bars before equals [OK]
Common Mistakes:
  • Using single | or misplaced symbols
  • Confusing with assignment =
  • Typing extra or missing characters
3. What will be the output of this Ruby code?
a = nil
b = 20
a ||= 10
b ||= 30
puts a
puts b
medium
A. 10\n30
B. nil\n30
C. nil\n20
D. 10\n20

Solution

  1. Step 1: Evaluate a ||= 10 when a is nil

    Since a is nil, a ||= 10 assigns 10 to a.
  2. Step 2: Evaluate b ||= 30 when b is 20

    Since b is already 20 (truthy), b ||= 30 does not change b.
  3. Final Answer:

    10 20 -> Option D
  4. Quick Check:

    nil replaced, truthy kept = 10 and 20 [OK]
Hint: ||= changes only nil or false variables [OK]
Common Mistakes:
  • Assuming b changes to 30
  • Thinking nil stays nil after ||= 10
  • Mixing up output order
4. Find the error in this Ruby code snippet:
count = 0
count ||= 5
puts count
medium
A. No error; output is 0
B. Syntax error due to ||= usage
C. Output is 5 instead of 0
D. Runtime error because count is zero

Solution

  1. Step 1: Understand value of count before ||=

    count is 0, which is not nil or false in Ruby (0 is truthy).
  2. Step 2: Apply count ||= 5

    Since count is truthy (0), count ||= 5 does not change it.
  3. Final Answer:

    No error; output is 0 -> Option A
  4. Quick Check:

    0 is truthy, ||= keeps original value [OK]
Hint: Remember 0 is truthy in Ruby, ||= won't overwrite [OK]
Common Mistakes:
  • Thinking 0 is false and gets replaced
  • Expecting syntax or runtime error
  • Confusing Ruby truthiness with other languages
5. Given this code:
settings = { theme: nil, font_size: 12 }
settings[:theme] ||= 'dark'
settings[:font_size] ||= 14
puts settings[:theme]
puts settings[:font_size]

What is the output and why?
hard
A. nil\n14 because theme is nil and font_size is replaced
B. dark\n12 because theme was nil and font_size was truthy
C. dark\n14 because both keys were nil or false
D. nil\n12 because ||= does not work on hashes

Solution

  1. Step 1: Check initial values in settings hash

    settings[:theme] is nil, settings[:font_size] is 12 (truthy).
  2. Step 2: Apply conditional assignment

    settings[:theme] ||= 'dark' sets theme to 'dark' because it was nil.
    settings[:font_size] ||= 14 does not change font_size because 12 is truthy.
  3. Final Answer:

    dark 12 -> Option B
  4. Quick Check:

    Nil replaced, truthy kept = dark and 12 [OK]
Hint: ||= sets defaults only if current value is nil or false [OK]
Common Mistakes:
  • Assuming 12 is replaced by 14
  • Thinking ||= doesn't work on hash values
  • Confusing nil with false values
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