Развертывание с помощью if let
Часть раздела Основы путешествия по Swift на Coddy — урок 12 из 86.
Чтобы безопасно получить доступ к значению внутри опционала, мы используем if let — технику, называемую optional binding. Она проверяет, содержит ли опционал значение, и, если да, извлекает его в временную константу.
var username: String? = "Swift_Dev"
if let name = username {
print("Welcome, \(name)")
} else {
print("No username found")
}
// Добро пожаловать, Swift_DevЗдесь if let проверяет, содержит ли username значение. Поскольку оно есть, значение извлекается в name, которая существует только внутри блока if. Если бы username было равно nil, вместо этого выполнился бы блок else.
var age: Int? = nil
if let unwrappedAge = age {
print("Age is \(unwrappedAge)")
} else {
print("Age not provided")
}
// Возраст не указанПоскольку age равно nil, условие не выполняется и выполняется блок else. Это предотвращает сбои, которые могли бы возникнуть, если бы мы попытались использовать отсутствующее значение напрямую.
Задание
ЛегкоВам предоставлена следующая переменная:
var nickname: String? = "CoddyLearner"Используйте if let для безопасного извлечения nickname. Если переменная содержит значение, выведите Hello, [value]!, где [value] — это извлеченное значение nickname. Если значение равно nil, выведите No nickname set.
Шпаргалка
Используйте if let (опциональную привязку) для безопасного извлечения значения из опционала и доступа к нему:
var username: String? = "Swift_Dev"
if let name = username {
print("Welcome, \(name)")
} else {
print("No username found")
}
// Welcome, Swift_DevЕсли опционал содержит значение, оно извлекается во временную константу, которая существует только внутри блока if. Если опционал равен nil, выполняется блок else:
var age: Int? = nil
if let unwrappedAge = age {
print("Age is \(unwrappedAge)")
} else {
print("Age not provided")
}
// Age not providedПопробуйте сами
var nickname: String? = "CoddyLearner"
// TODO: Напишите свой код ниже
// Используйте if let для безопасного извлечения nickname
// Если он содержит значение, выведите "Hello, [value]!"
// Если значение равно nil, выведите "No nickname set"В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы
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Повторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод