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.
Задание
ЛегкоНапиши функцию 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 {
// Напишите код здесь
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
4Операторы. Часть 1
Арифметические операторыОператор остатка от деленияСоставное присваиваниеПовторение: Простая математикаОператоры сравнения7Основы ввода-вывода
Функция PrintИнтерполяция строкВвод через ReadLineПреобразование типовПовторение — до 120Повторение — True или False10Функции
Объявление функцииПараметры и аргументыВозвращаемые значенияМетки аргументовПовторение: функция SigmaПовторение: функция валидацииЗначения по умолчанию13Итерирование по последовательностям
Итерирование по элементамМетод enumerateИтерирование по строкам, ч. 1Итерирование по строкам, ч. 22Переменные
Let против VarАннотации типовЧислаСтрокиBooleanСоглашения об именованииИтоги — Инициализация переменных5Операторы. Часть 2
Логические операторы. Часть 1Логические операторы. Часть 2Повторение: простая логикаЛогические операторы. Часть 3Тернарный оператор8Калькулятор разделения счета
Приветственное сообщениеПолучение ввода14Массивы: Продвинутый уровень
Срезы массивов. Часть 1Срезы массивов. Часть 2Операторы последовательностейМетод Contains3Опционалы
Что такое опционалыРазвертывание с помощью if letGuard letОператор объединения с nilИтоги — безопасное развертывание6Принятие решений
Оператор IfКонструкция If - ElseПовторение — Простой калькуляторОператор SwitchSwitch с диапазонами9Циклы
Цикл For-InЦикл WhileЦикл Repeat-WhileBreakContinueПовторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический вводПотренируйтесь самостоятельно: Песочница Swift