Optionals
Nil Coalescing
The ?? operator provides a fallback value when an optional is nil.
Choose a fallback
nil_coalescing.swift
Replay: real traced execution (multi-file project)
let preferredName: String? = nil
let fallbackName = "Guest"
let displayName = preferredName ?? fallbackName
print("displayName=\(displayName)")
let preferredName: String? = "Ari"
let fallbackName = "Guest"
let displayName = preferredName ?? fallbackName
print("displayName=\(displayName)")
let preferredName: String? = "Lee"
let fallbackName = "Guest"
let displayName = preferredName ?? fallbackName
print("displayName=\(displayName)")
preferredName ← nil, fallbackName ← Guest, displayName ← Guest
1let preferredName→ nil: String? = nil //@preferredName="Ari", "Lee"2let fallbackName→ Guest = "Guest"3let displayName→ Guest = preferredNamenil ?? fallbackNameGuest45print("displayName=\(displayNameGuest)")outputdisplayName=Guest
preferredName ← Optional("Ari"), fallbackName ← Guest, displayName ← Ari
1let preferredName→ Optional("Ari"): String? = "Ari"2let fallbackName→ Guest = "Guest"3let displayName→ Ari = preferredNameOptional("Ari") ?? fallbackNameGuest45print("displayName=\(displayNameAri)")outputdisplayName=Ari
preferredName ← Optional("Lee"), fallbackName ← Guest, displayName ← Lee
1let preferredName→ Optional("Lee"): String? = "Lee"2let fallbackName→ Guest = "Guest"3let displayName→ Lee = preferredNameOptional("Lee") ?? fallbackNameGuest45print("displayName=\(displayNameLee)")outputdisplayName=Lee
fallback
Nil coalescing keeps fallback logic compact. If the optional has a value, Swift uses it; otherwise Swift uses the value on the right side of `??`.