Оператор объединения с nil
Часть раздела Основы путешествия по Swift на Coddy — урок 14 из 86.
Иногда вам просто нужно предоставить значение по умолчанию, когда опционал равен nil, не написав при этом несколько строк кода. Оператор объединения с nil (??) в Swift делает именно это — он извлекает значение из опционала, если оно есть, или возвращает значение по умолчанию, если он равен nil.
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestТак как nickname имеет значение nil, оператор возвращает "Guest" вместо него. Если бы nickname имел значение, использовалось бы оно.
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderОператор объединения с nil идеально подходит для однострочных выражений, когда вам нужно резервное значение. Это выглядит чище, чем написание инструкции if let, когда вы просто хотите заменить nil значением по умолчанию. Результат всегда является неопциональным значением, поэтому вы можете использовать его напрямую без дальнейшего извлечения.
Задание
ЛегкоНапишите функцию getDisplayName, которая принимает необязательное имя пользователя username и имя по умолчанию defaultName, а затем возвращает соответствующее отображаемое имя, используя оператор объединения с nil (nil coalescing operator).
Если имя пользователя пустое (представлено пустой строкой ""), рассматривайте его как nil и возвращайте имя по умолчанию. В противном случае верните имя пользователя.
Параметры:
username(String): Имя пользователя (пустая строка представляет nil)defaultName(String): Резервное имя для использования
Возвращает: Имя пользователя, если оно не пустое, в противном случае defaultName.
Подсказка: Преобразуйте имя пользователя в optional внутри вашей функции — если оно пустое, сделайте его nil. Затем используйте ??, чтобы предоставить резервное значение.
Шпаргалка
Оператор объединения по nil (??) извлекает значение из опционала, если оно есть, или возвращает значение по умолчанию, если оно равно nil:
let nickname: String? = nil
let displayName = nickname ?? "Guest"
print(displayName) // GuestЕсли опционал содержит значение, то вместо этого используется оно:
let username: String? = "SwiftCoder"
let greeting = username ?? "Anonymous"
print(greeting) // SwiftCoderРезультат всегда является неопциональным значением, что делает этот подход более лаконичным, чем if let, для простых сценариев с использованием запасного значения.
Попробуйте сами
func getDisplayName(username: String, defaultName: String) -> 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Повторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический ввод