Menu
CoddyTech

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]"です。

関数の下にあるロックされた行は、入力から年齢を読み取り(入力がnilの場合はnilになります)、関数の戻り値を出力します。

例: ageが25の場合は、"Age: 25"を返してください。ageがnilの場合は、"Invalid age"を返してください。

自分で試してみよう

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

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

基礎のすべてのレッスン

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