デフォルト値の連鎖
複数のフォールバックを整理して組み合わせます。
「デフォルト値の連鎖」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。
複数の代替値
複数のオプショナルの候補があり、最初にnilでない値を使いたいことがあります。その場合は、複数の??演算子を連結できます。
let primary: String? = nil
let secondary: String? = "Backup"
let name = primary ?? secondary ?? "Default"
print(name)連結の読み方
a ?? b ?? cは、「aがnilでなければaを使い、そうでなければb、それもなければcを使う」と読みます。最初に値が見つかると評価は停止します。
let a: Int? = nil
let b: Int? = nil
let c = 7
print(a ?? b ?? c)最初のnilでない値が優先されます
オプショナルに値が見つかると、その時点で残りは無視されます。ここではsecondaryが使われ、最後のデフォルト値には到達しません。
let primary: Int? = nil
let secondary: Int? = 50
let fallback = 0
print(primary ?? secondary ?? fallback)最後以外はすべてオプショナル
連結では、最後のオペランド以外は通常すべてオプショナルです。最後のオペランドは、必ず値がある非オプショナルのデフォルト値です。
let nick: String? = nil
let full: String? = nil
let result: String = nick ?? full ?? "Anonymous"
print(result)短絡評価
&&や||と同様に、??の連結も短絡評価されます。値が見つかると、それより後の式は評価されません。
func makeDefault() -> Int {
print("default computed")
return 0
}
let found: Int? = 9
print(found ?? makeDefault())右結合性
??演算子は右結合なので、a ?? b ?? cはa ?? (b ?? c)としてグループ化されます。これは代替値を指定する場合に適した動作です。
let x: Int? = nil
let y: Int? = nil
let z: Int? = 3
print(x ?? (y ?? (z ?? 0)))階層化された設定のデフォルト値
連結は、ユーザー設定、アプリ設定、ハードコードされたデフォルト値というような、階層化された設定で特に役立ちます。
let userTheme: String? = nil
let appTheme: String? = "light"
let theme = userTheme ?? appTheme ?? "system"
print(theme)変換との組み合わせ
失敗可能な変換を最後のデフォルト値と連結すると、入力を堅牢に解析できます。
let raw: String? = nil
let parsed = raw.flatMap { Int($0) } ?? 0
print(parsed)連結した辞書検索
複数の辞書検索を連結して、最初に見つかったキーの値を使うことができます。
let prefs = ["color": "blue"]
let pick = prefs["accent"] ?? prefs["color"] ?? "gray"
print(pick)連結を短く保つ
代替値が2つか3つなら、読みやすく記述できます。多くの代替値を連結する必要がある場合は、明確さを保つためにロジックを関数に切り出すことを検討してください。
let one: String? = nil
let two: String? = nil
let three = "C"
print(one ?? two ?? three)連結の結果の型
最後のオペランドが非オプショナルである限り、連結の最終結果も非オプショナルです。そのため、値をすぐに安全に使えます。
let v1: Int? = nil
let v2: Int? = 4
let total: Int = (v1 ?? v2 ?? 0) + 1
print(total)クイックチェック
代替値の連結をテストします。
まとめ:デフォルト値の連結
??演算子を連結して、複数のオプショナルを順番に試し、最後のデフォルト値に切り替えます。最初のnilでない値が使われ、評価は短絡され、結果は非オプショナルになります。
let p: String? = nil
let s: String? = "ok"
print(p ?? s ?? "none")よくある質問
「デフォルト値の連鎖」レッスンは無料ですか?
はい。「デフォルト値の連鎖」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。
「デフォルト値の連鎖」で何を学びますか?
複数のフォールバックを整理して組み合わせます。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Swift Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「デフォルト値の連鎖」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このSwift Academyレッスンでコードを書いて実行できますか?
はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。