導入
「値が無ければ既定値を使う」「値があるときだけ次の処理をする」――もっと手短にOptionalを扱う道具が ?? と ?. です。
説明
?? は nil合体演算子。「左が nil なら右の既定値を使う」という意味です。
let typed: String? = nil
let display = typed ?? "ゲスト"
print(display) // ゲスト
let score: Int? = 90
print("点数: \(score ?? 0)") // 90
?. は オプショナルチェーン。Optionalが nil でなければそのメンバにアクセスし、nil なら全体が nil になります(途中で安全に打ち切る)。
let word: String? = "Swift"
let length = word?.count // 値があるので 5(これも Optional)
print(length ?? 0) // 5
let empty: String? = nil
print(empty?.count ?? 0) // 0(nil なので count には触れない)
?? は既定値を用意するのに、?. は「あるときだけたどる」のに使います。この2つで、if let を書くまでもない場面をスッキリ書けます。
やってみよう
typed に文字を入れると ?? の結果が変わります。word を nil にして word?.count がどうなるかも確かめましょう。
演習
let name: String? = nil を作り、?? を使って「名無しさん」と表示してください。
ヒント1を見る
let display = name ?? "名無しさん"
ヒント2を見る
print(display)