Optionals
Optional Values
An optional can hold a value or hold nil when no value is available.
Store a value or nil
optional_values.swift
Replay: real traced execution (multi-file project)
let nickname: String? = "Mina"
let hasNickname = nickname != nil
let display = String(describing: nickname)
print("hasNickname=\(hasNickname)")
print("display=\(display)")
let nickname: String? = nil
let hasNickname = nickname != nil
let display = String(describing: nickname)
print("hasNickname=\(hasNickname)")
print("display=\(display)")
let nickname: String? = "Kai"
let hasNickname = nickname != nil
let display = String(describing: nickname)
print("hasNickname=\(hasNickname)")
print("display=\(display)")
nickname ← Optional("Mina"), hasNickname ← true, display ← Optional("Mina")
1let nickname→ Optional("Mina"): String? = "Mina" //@nickname=nil, "Kai"2let hasNickname→ true = nicknameOptional("Mina") != nil3let display→ Optional("Mina") = String(describing: nicknameOptional("Mina"))45print("hasNickname=\(hasNicknametrue)")6print("display=\(displayOptional("Mina"))")outputhasNickname=true display=Optional("Mina")
nickname ← nil, hasNickname ← false, display ← nil
1let nickname→ nil: String? = nil2let hasNickname→ false = nicknamenil != nil3let display→ nil = String(describing: nicknamenil)45print("hasNickname=\(hasNicknamefalse)")6print("display=\(displaynil)")outputhasNickname=false display=nil
nickname ← Optional("Kai"), hasNickname ← true, display ← Optional("Kai")
1let nickname→ Optional("Kai"): String? = "Kai"2let hasNickname→ true = nicknameOptional("Kai") != nil3let display→ Optional("Kai") = String(describing: nicknameOptional("Kai"))45print("hasNickname=\(hasNicknametrue)")6print("display=\(displayOptional("Kai"))")outputhasNickname=true display=Optional("Kai")
optionals
Use an optional type such as `String?` when a variable may have no value. Compare with `nil` before relying on the value.