Bird
Raised Fist0
Swiftprogramming~5 mins

Nil coalescing operator deep usage in Swift - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What does the nil coalescing operator (??) do in Swift?
It provides a default value when an optional is nil. It unwraps the optional if it has a value, otherwise returns the default value.
Click to reveal answer
intermediate
How can you chain multiple nil coalescing operators?
You can chain them like: optional1 ?? optional2 ?? defaultValue. Swift evaluates from left to right and returns the first non-nil value.
Click to reveal answer
intermediate
Can the right side of the nil coalescing operator be another optional?
Yes, but the result will be an optional if the right side is optional. To get a non-optional result, the right side should be a non-optional value.
Click to reveal answer
beginner
Explain how nil coalescing operator helps avoid nested if-let statements.
Instead of multiple nested if-let to unwrap optionals, you can use ?? to provide defaults and simplify code, making it cleaner and easier to read.
Click to reveal answer
advanced
What happens if you use nil coalescing operator with a function call on the right side?
The function is only called if the left optional is nil. This is useful for lazy evaluation or expensive default value calculations.
Click to reveal answer
What will this Swift code print?
let a: Int? = nil
let b = a ?? 5
A5
Bnil
C0
DCompilation error
Which of these is a valid use of chaining nil coalescing operators?
Alet x = a ?? b ?? 10
Blet x = a ?? ?? 10
Clet x = ?? a ?? 10
Dlet x = a ?? b ??
If 'a' is Int? and 'b' is Int?, what is the type of 'a ?? b'?
ACompilation error
BInt
COptional<Optional<Int>>
DInt?
When is the right side expression of '??' evaluated?
AOnly if the left side is non-nil
BOnly if the left side is nil
CNever
DAlways
Which statement about nil coalescing operator is false?
AIt unwraps optionals or returns a default value
BIt can chain multiple optionals
CIt always returns a non-optional value
DIt evaluates the right side lazily
Explain how the nil coalescing operator (??) works in Swift and give an example of chaining it with multiple optionals.
Think about how it picks the first non-nil value.
You got /3 concepts.
    Describe a scenario where using the nil coalescing operator with a function call on the right side is beneficial.
    Consider when the default value is expensive to compute.
    You got /3 concepts.

      Practice

      (1/5)
      1. What does the nil coalescing operator ?? do in Swift?
      easy
      A. It returns the value of an optional if it is not nil, otherwise returns a default value.
      B. It forces unwraps an optional and crashes if nil.
      C. It converts a non-optional value into an optional.
      D. It checks if two optionals are equal.

      Solution

      1. Step 1: Understand the purpose of the nil coalescing operator

        The operator ?? is used to provide a default value when an optional is nil.
      2. Step 2: Compare with other options

        Options A, C, and D describe different behaviors unrelated to ??.
      3. Final Answer:

        It returns the value of an optional if it is not nil, otherwise returns a default value. -> Option A
      4. Quick Check:

        Nil coalescing operator = default value fallback [OK]
      Hint: Remember: ?? means "use this if nil" [OK]
      Common Mistakes:
      • Confusing ?? with forced unwrapping (!)
      • Thinking ?? converts types
      • Assuming ?? compares optionals
      2. Which of the following is the correct syntax to use the nil coalescing operator in Swift?
      easy
      A. let value = optionalValue ??? defaultValue
      B. let value = optionalValue ?: defaultValue
      C. let value = optionalValue ? defaultValue
      D. let value = optionalValue ?? defaultValue

      Solution

      1. Step 1: Recall the correct syntax for nil coalescing

        The correct syntax uses two question marks: ?? between the optional and the default value.
      2. Step 2: Eliminate incorrect options

        Options B, C, and D use invalid or incorrect operators.
      3. Final Answer:

        let value = optionalValue ?? defaultValue -> Option D
      4. Quick Check:

        Syntax for nil coalescing = ?? [OK]
      Hint: Look for exactly two question marks ?? [OK]
      Common Mistakes:
      • Using ?: which is from other languages
      • Using single ? instead of ??
      • Adding extra question marks ???
      3. What is the output of the following Swift code?
      let a: Int? = nil
      let b: Int? = 5
      let c: Int? = nil
      let result = a ?? b ?? c ?? 10
      print(result)
      medium
      A. 5
      B. 10
      C. nil
      D. Compilation error

      Solution

      1. Step 1: Evaluate the chained nil coalescing

        The expression a ?? b ?? c ?? 10 checks each optional from left to right and returns the first non-nil value.
      2. Step 2: Check each optional's value

        a is nil, so move to b which is 5 (non-nil), so the result is 5.
      3. Final Answer:

        5 -> Option A
      4. Quick Check:

        First non-nil value = 5 [OK]
      Hint: Chain ?? to pick first non-nil value [OK]
      Common Mistakes:
      • Assuming nil is returned if first is nil
      • Ignoring chaining order
      • Thinking default 10 is always returned
      4. Identify the error in this Swift code using nil coalescing:
      let x: Int? = nil
      let y: Int = 3
      let z = x ?? y ?? 5
      print(z)
      medium
      A. x must be non-optional
      B. No error, code runs fine
      C. y must be optional to use ??
      D. Cannot use ?? with non-optional y

      Solution

      1. Step 1: Understand the types involved in nil coalescing

        The operator ?? requires the right side to be the same type as the optional or a non-optional fallback value.
      2. Step 2: Analyze the expression x ?? y ?? 5

        Here, x is Int?, y is Int, but y ?? 5 is invalid because y is not optional, so you cannot use ?? on it.
      3. Final Answer:

        Cannot use ?? with non-optional y -> Cannot use ?? with non-optional y
      4. Quick Check:

        Right side of ?? must be optional or value [OK]
      Hint: Right side of ?? must be optional or value, not non-optional with ?? [OK]
      Common Mistakes:
      • Using ?? on non-optional values
      • Confusing optional and non-optional types
      • Assuming ?? works like || operator
      5. Given the following Swift code, what will be the value of finalValue?
      func getValue() -> Int? { return nil }
      let a: Int? = nil
      let b: Int? = getValue()
      let c: Int? = 7
      let finalValue = a ?? b ?? c ?? 0
      hard
      A. nil
      B. 0
      C. 7
      D. Compilation error

      Solution

      1. Step 1: Evaluate each optional in the chain

        a is nil, b is nil (from getValue()), c is 7 (non-nil).
      2. Step 2: Apply nil coalescing operator

        The expression a ?? b ?? c ?? 0 returns the first non-nil value, which is 7.
      3. Final Answer:

        7 -> Option C
      4. Quick Check:

        First non-nil in chain = 7 [OK]
      Hint: Chain ?? to find first non-nil, else default [OK]
      Common Mistakes:
      • Assuming function return nil means error
      • Ignoring that c is non-nil
      • Thinking default 0 is returned always
      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