Menu
Coddy logo textTech

guard let

CoddyのSwiftジャーニー「基礎」セクションの一部。レッスン 13/86。

if let はオプショナルをアンラップし、値が存在するときにコードを実行します。一方、guard let は反対のアプローチを取ります。値がない場合は早期に終了します。これは特に、まず「悪い」ケースを処理し、メインのロジックをすっきり保ちたい関数内で便利です。

func greet(name: String?) {
    guard let unwrappedName = name else {
        print("No name provided")
        return
    }
    print("Hello, \(unwrappedName)!")
}

greet(name: "Taylor") // こんにちは、Taylor!
greet(name: nil)      // 名前が提供されていません

guard let文は、nameに値があるかどうかを確認します。値がない場合はelseブロックが実行され、関数はreturnで終了します。オプショナルに値が含まれている場合は、unwrappedNameにアンラップされます。ここがif letとの重要な違いです。アンラップされた変数はブロック内だけでなく、関数の残りの部分でも利用できます。

この「早期終了」パターンは、エラーケースをあらかじめ処理することでコードの可読性を保ち、メインロジックが複数の if 文の中にネストされるのを防ぎます。

challenge icon

チャレンジ

簡単
オプションの age パラメータを受け取り、guard let を使用して安全にアンラップする関数 validateAge を記述してください。

年齢が nil の場合は、"Invalid age" を返してください。それ以外の場合は、アンラップされた年齢が [value] となる "Age: [value]" を返してください。

パラメータ:

  • age (Int?): 人の年齢を表すオプションの整数

戻り値: 文字列。入力が nil の場合は "Invalid age"、それ以外の場合はアンラップされた値を含む "Age: [value]"

例: age25 の場合は、"Age: 25" を返します。agenil の場合は、"Invalid age" を返します。

自分で試してみよう

func validateAge(age: Int) -> String {
    // ここにコードを書いてください
}
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

基礎のすべてのレッスン

自分で練習してみよう: Swiftプレイグラウンド