Оператор объединения с 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 и возвращай имя по умолчанию. В противном случае возвращай имя пользователя.
Параметры:
username(String): имя пользователя (пустая строка обозначает nil)defaultName(String): запасное имя
Возвращает: имя пользователя, если оно не пустое, в противном случае — defaultName.
Подсказка: Внутри функции сохрани имя пользователя в переменной типа String?, а если имя пользователя равно "", присвой этой переменной значение nil с помощью простого if. Затем используй ??, чтобы указать запасное значение.
Попробуйте сами
func getDisplayName(username: String, defaultName: String) -> 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