Оператор объединения с nil
Часть раздела Основы путешествия по Swift на Coddy. Урок 14 из 86.
Иногда нужно просто предоставить значение default, когда optional имеет значение nil, не записывая несколько строк кода. Оператор объединения с nil (??) делает именно это. Он unwraps optional, если в нём есть значение, или возвращает значение default, если это 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 на default. Результат всегда имеет необязательное значение, поэтому его можно использовать напрямую без дальнейшего извлечения.
Задание
ЛегкоНапиши функцию getDisplayName, которая принимает необязательный username и defaultName, а затем возвращает подходящее отображаемое имя с использованием оператора объединения с nil.
Если имя пользователя пустое (представлено пустой строкой ""), считай его значением nil и верни имя по умолчанию. В противном случае верни имя пользователя.
Параметры:
username(String): имя пользователя (пустая строка представляет nil)defaultName(String): резервное имя для использования
Возвращает: имя пользователя, если оно не пустое, иначе — defaultName.
Подсказка: Внутри функции сохрани имя пользователя в переменной типа String?, а если имя пользователя равно "", присвой этой переменной значение nil с помощью простого if. Затем используй ??, чтобы указать резервное значение.
Попробуйте сами
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Повторение: ФакториалДиапазоны в циклахВложенные циклыПовторение: Динамический вводПотренируйтесь самостоятельно: Песочница Swift