Bird
Raised Fist0
Rubyprogramming~10 mins

Conditional assignment (||=) in Ruby - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to assign 10 to x only if x is nil or false.

Ruby
x [1] 10
Drag options to blanks, or click blank then click option'
A+=
B=
C&&=
D||=
Attempts:
3 left
💡 Hint
Common Mistakes
Using = assigns unconditionally.
Using &&= assigns only if variable is truthy.
Using += adds to the existing value.
2fill in blank
medium

Complete the code to set default value 'guest' for username if it is nil or false.

Ruby
username [1] 'guest'
Drag options to blanks, or click blank then click option'
A&&=
B=
C||=
D+=
Attempts:
3 left
💡 Hint
Common Mistakes
Using = overwrites the value always.
Using &&= assigns only if variable is truthy.
Using += tries to add strings.
3fill in blank
hard

Fix the error in the code to assign 5 to count only if count is nil or false.

Ruby
count [1] 5
Drag options to blanks, or click blank then click option'
A||=
B=
C&&=
D+=
Attempts:
3 left
💡 Hint
Common Mistakes
Using = assigns unconditionally.
Using &&= assigns only if variable is truthy.
Using += adds to the existing value.
4fill in blank
hard

Fill both blanks to assign 'blue' to color only if color is nil or false, and then append ' sky' to it.

Ruby
color [1] 'blue'
color [2] ' sky'
Drag options to blanks, or click blank then click option'
A||=
B+=
C=
D&&=
Attempts:
3 left
💡 Hint
Common Mistakes
Using = instead of ||= causes unconditional assignment.
Using &&= instead of ||= won't assign if nil.
Using = instead of += won't append.
5fill in blank
hard

Fill all three blanks to assign 0 to score if nil or false, then add 10, then assign 'done' to status if nil or false.

Ruby
score [1] 0
score [2] 10
status [3] 'done'
Drag options to blanks, or click blank then click option'
A||=
B+=
D=
Attempts:
3 left
💡 Hint
Common Mistakes
Using = instead of ||= causes unconditional assignment.
Using = instead of += won't add to score.
Mixing up the order of operations.

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