Bird
Raised Fist0
Rubyprogramming~5 mins

Conditional assignment (||=) in Ruby

Choose your learning style10 modes available
Introduction

Conditional assignment helps you set a value only if the variable is nil or false. It keeps your code simple and avoids overwriting existing values.

When you want to give a variable a default value only if it doesn't have one yet.
When you want to avoid changing a variable that already has a useful value.
When you want to simplify code that checks if a variable is nil or false before assigning.
When you want to set configuration options only if they are not already set.
Syntax
Ruby
variable ||= value

This means: assign value to variable only if variable is nil or false.

It is a shortcut for variable = variable || value.

Examples
If name is nil or false, it becomes "Guest". Otherwise, it keeps its current value.
Ruby
name ||= "Guest"
If count is nil or false, it becomes 0.
Ruby
count ||= 0
Sets the theme to "light" only if settings[:theme] is nil or false.
Ruby
settings[:theme] ||= "light"
Sample Program

First, name is nil, so it gets assigned "Alice". Then, since name already has "Alice", it does not change to "Bob".

Ruby
name = nil
name ||= "Alice"
puts name

name ||= "Bob"
puts name
OutputSuccess
Important Notes

Remember, ||= only assigns if the variable is nil or false. If the variable has any other value, it stays unchanged.

This operator is very useful for setting default values in a clean way.

Summary

Conditional assignment (||=) sets a variable only if it is nil or false.

It helps keep existing values and only fills in defaults when needed.

Use it to write shorter and clearer code for default values.

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