Menu
Coddy logo textTech

Guard let

Часть раздела Основы путешествия по Swift на Coddy. Урок 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

Задание

Легко
Напиши функцию validateAge, которая принимает необязательный параметр age и использует guard let, чтобы безопасно извлечь его значение.

Если значение age равно nil, верни "Invalid age". В противном случае верни "Age: [value]", где [value] — извлечённое значение возраста.

Параметры:

  • age (Int?): необязательное целое число, представляющее возраст человека

Возвращает: строку: либо "Invalid age", если входное значение равно nil, либо "Age: [value]" с извлечённым значением.

Пример: если age равно 25, верни "Age: 25". Если age равно nil, верни "Invalid age".

Попробуйте сами

func validateAge(age: Int) -> String {
    // Напишите код здесь
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы

Потренируйтесь самостоятельно: Песочница Swift