0Pricing
Swift Academy · レッスン

if letと省略形のバインディング

Swift 5.7の省略形を含め、スコープ内でoptionalの値をアンラップします。

「if letと省略形のバインディング」はCoddyKit上の無料Swift Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはSwift Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Swift Academyコースには全4レッスンが含まれています。

オプショナルをバインドする理由

中の値を使うには、オプショナルをアンラップする必要があります。if letを使うと、値が存在する場合にのみ安全にアンラップできます。

let stored: Int? = 5
if let value = stored {
    print(value)
}

if letの形式

if let name = optional { ... }と記述します。波かっこの内側では、nameはアンラップされた非オプショナルの値です。オプショナルがnilなら、ブロックはスキップされます。

let input: String? = "Swift"
if let text = input {
    print(text.count)
}

elseを追加する

elseを付けて、nilの場合を明示的に処理できます。

let age: Int? = nil
if let a = age {
    print("Age is \(a)")
} else {
    print("No age provided")
}

省略形のバインディング

Swift 5.7以降では、新しい定数がオプショナルと同じ名前であれば、= valueの部分を省略してif let valueとだけ記述できます。

let score: Int? = 90
if let score {
    print(score)
}

省略形と従来の形式

省略形のif let scoreは、if let score = scoreと同じです。名前が一致する場合の繰り返しを減らせます。

let nickname: String? = "Sam"
if let nickname {
    print("Hi \(nickname)")
}

バインディングのスコープ

アンラップされた定数は、if本体の中でのみ存在します。外側では、オプショナルは引き続きオプショナルです。

let maybe: Int? = 7
if let maybe {
    print(maybe + 1)
}
print(maybe as Any)

変換結果のバインディング

if letは、Int(string)のような失敗可能な変換と自然に組み合わせられます。

let raw = "42"
if let number = Int(raw) {
    print(number * 2)
} else {
    print("Not a number")
}

辞書の値をバインドする

if letを使うと、存在しない可能性がある辞書の値を安全に読み取れます。

let ages = ["Ann": 30]
if let annAge = ages["Ann"] {
    print(annAge)
}
if let bobAge = ages["Bob"] {
    print(bobAge)
} else {
    print("Bob not found")
}

変更可能なコピーをバインドする

アンラップした値をローカルで変更したい場合は、if varを使います。変更は元のオプショナルには影響しません。

let count: Int? = 10
if var c = count {
    c += 5
    print(c)
}

ネストを避ける

値に依存するロジックをバインディングブロックの中に安全に記述できるため、!による強制アンラップを避けられます。

let name: String? = "Lia"
if let name {
    let upper = name.uppercased()
    print(upper)
}

強制アンラップを使わない理由

!で強制アンラップすると、オプショナルがnilの場合にクラッシュします。if letは、クラッシュを起こさない安全な代替手段です。

let value: Int? = nil
if let value {
    print(value)
} else {
    print("Safe: was nil")
}

クイックチェック

オプショナルバインディングをテストします。

まとめ:if letと省略形のバインディング

if letは、値が存在する場合にのみオプショナルをローカル定数へ安全にアンラップします。Swift 5.7の省略形if let nameを使うと、名前の繰り返しを避けられます。強制アンラップよりもこちらを使ってください。

let x: Int? = 3
if let x { print(x) }

よくある質問

「if letと省略形のバインディング」レッスンは無料ですか?

はい。「if letと省略形のバインディング」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Swift Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Swift Academyコースには全4レッスンが含まれています。

「if letと省略形のバインディング」で何を学びますか?

Swift 5.7の省略形を含め、スコープ内でoptionalの値をアンラップします。 ブラウザで直接実行するハンズオンコードでSwift Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Swift Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのSwift Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。

「if letと省略形のバインディング」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このSwift Academyレッスンでコードを書いて実行できますか?

はい。すべてのSwift Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. if letと省略形のバインディング
  2. 早期終了のためのguard let
  3. 複数のoptionalのバインディング
  4. switchとforでのoptionalパターン
← Swift Academyに戻る