0Pricing
Swift Academy · Урок

Цепочки значений по умолчанию

Аккуратно объединяйте несколько запасных вариантов.

«Цепочки значений по умолчанию» — бесплатный урок Swift Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Больше одного fallback

Иногда есть несколько источников опциональных значений, и требуется получить первое непустое. Можно объединить несколько операторов ?? в цепочку.

let primary: String? = nil
let secondary: String? = "Backup"
let name = primary ?? secondary ?? "Default"
print(name)

Как читается цепочка

Читайте a ?? b ?? c так: используйте a, если оно не пусто, иначе b, иначе c. Вычисление останавливается на первом найденном значении.

let a: Int? = nil
let b: Int? = nil
let c = 7
print(a ?? b ?? c)

Побеждает первое непустое значение

Как только один из вариантов предоставляет значение, остальные игнорируются. Здесь побеждает secondary, а итоговое значение по умолчанию никогда не используется.

let primary: Int? = nil
let secondary: Int? = 50
let fallback = 0
print(primary ?? secondary ?? fallback)

Все значения, кроме последнего, опциональны

В цепочке каждый операнд, кроме последнего, обычно является опциональным значением. Последний операнд — гарантированное необязательное значение по умолчанию.

let nick: String? = nil
let full: String? = nil
let result: String = nick ?? full ?? "Anonymous"
print(result)

Вычисление с коротким замыканием

Как и && с ||, цепочка ?? использует короткое замыкание. После нахождения значения последующие выражения не вычисляются.

func makeDefault() -> Int {
    print("default computed")
    return 0
}
let found: Int? = 9
print(found ?? makeDefault())

Правая ассоциативность

Оператор ?? правоассоциативен, поэтому a ?? b ?? c группируется как a ?? (b ?? c). Именно такое поведение нужно для fallback-значений.

let x: Int? = nil
let y: Int? = nil
let z: Int? = 3
print(x ?? (y ?? (z ?? 0)))

Значения по умолчанию в многоуровневой конфигурации

Цепочки особенно полезны для многоуровневой конфигурации: сначала настройка пользователя, затем настройка приложения, затем значение по умолчанию, заданное в коде.

let userTheme: String? = nil
let appTheme: String? = "light"
let theme = userTheme ?? appTheme ?? "system"
print(theme)

Сочетание с преобразованиями

Можно объединить преобразования, которые могут завершиться неудачей, с итоговым значением по умолчанию, чтобы надёжно разобрать входные данные.

let raw: String? = nil
let parsed = raw.flatMap { Int($0) } ?? 0
print(parsed)

Поиск в словарях внутри цепочки

Несколько поисков в словарях можно объединить в цепочку, чтобы использовать первый доступный ключ.

let prefs = ["color": "blue"]
let pick = prefs["accent"] ?? prefs["color"] ?? "gray"
print(pick)

Делайте цепочки короткими

Цепочки из two или three fallback читаются хорошо. Если цепочка становится длиннее, для ясности вынесите эту логику в функцию.

let one: String? = nil
let two: String? = nil
let three = "C"
print(one ?? two ?? three)

Тип результата цепочки

Итоговый результат цепочки не является опциональным, если последний операнд не является опциональным. Поэтому значение безопасно использовать сразу.

let v1: Int? = nil
let v2: Int? = 4
let total: Int = (v1 ?? v2 ?? 0) + 1
print(total)

Быстрая проверка

Проверьте цепочки fallback.

Итоги: объединение значений по умолчанию

Объединяйте операторы ?? в цепочку, чтобы последовательно проверить несколько опциональных значений и прибегнуть к итоговому значению по умолчанию. Побеждает первое непустое значение, вычисление выполняется с коротким замыканием, а результат не является опциональным.

let p: String? = nil
let s: String? = "ok"
print(p ?? s ?? "none")

Часто задаваемые вопросы

Урок «Цепочки значений по умолчанию» бесплатный?

Да — полный текст урока «Цепочки значений по умолчанию» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Цепочки значений по умолчанию»?

Аккуратно объединяйте несколько запасных вариантов. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.

Сколько времени занимает урок «Цепочки значений по умолчанию»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Оператор объединения с nil
  2. Цепочки значений по умолчанию
  3. Значения параметров функций по умолчанию
  4. Индексы словаря со значениями по умолчанию
← Назад к Swift Academy