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") // Привет, Тейлор!
greet(name: nil) // Имя не указаноИнструкция guard let проверяет, есть ли значение у name. Если значения нет, выполняется блок else, и функция завершается с помощью return. Если опционал содержит значение, оно распаковывается в unwrappedName, и вот в чём ключевое отличие от if let: распакованная переменная остаётся доступной до конца функции, а не только внутри блока.
Этот шаблон «раннего выхода» делает код более читаемым: ошибки обрабатываются заранее, поэтому основная логика не оказывается вложенной в несколько инструкций if.
Задание
ЛегкоНапиши функцию validateAge, которая принимает опциональный параметр age и использует guard let, чтобы безопасно извлечь его значение.
Если возраст равен nil, верни "Invalid age". В противном случае верни "Age: [value]", где [value] — извлечённое значение возраста.
Параметры:
age(Int?): опциональное целое число, обозначающее возраст человека
Возвращаемое значение: строка: либо "Invalid age", если входное значение равно nil, либо "Age: [value]" с извлечённым значением.
Заблокированные строки под твоей функцией считывают возраст из входных данных (если на вход подано nil, считывается nil) и выводят то, что возвращает твоя функция.
Пример: если age равно 25, верни "Age: 25". Если age равно nil, верни "Invalid age".
Попробуйте сами
func validateAge(age: Int?) -> String {
// Напишите код здесь
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: простая математикаОператоры сравнения7Основы ввода-вывода
Функция printИнтерполяция строкВвод с ReadLineПреобразование типовПовторение: до 120Повторение: истина или ложь2Переменные
Let и VarАннотации типовЧислаСтрокаЛогический типСоглашения об именованииПовторение — инициализация переменных5Операторы, часть 2
Логические операторы, часть 1Логические операторы, часть 2Повторение: простая логикаЛогические операторы, часть 3Тернарный оператор8Калькулятор разделения счёта
Приветственное сообщениеВвод данных14Массивы: продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опциональные значения
Что такое опциональные значенияИзвлечение значения с помощью if letGuard letОператор объединения с nilПовторение — безопасное извлечение значения6Принятие решений
Условный оператор ifIf — ElseПовторение: простой калькуляторОператор switchSwitch с диапазонами9Циклы
Цикл for-inЦикл whileЦикл repeat-whileПрерывание циклаПереход к следующей итерацииПовторение — факториалДиапазоны в циклахВложенный циклПовторение — динамический вводПотренируйтесь самостоятельно: Песочница Swift