0Pricing
Swift Academy · Урок

Оператор объединения с nil

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

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

Проблема отсутствующего значения

Опциональное значение может содержать значение или быть пустым. Часто требуется использовать значение, если оно есть, либо подставить значение по умолчанию, если оно отсутствует.

let typedName: String? = nil
let name = typedName ?? "Guest"
print(name)

Оператор ??

Оператор объединения с отсутствующим значением ?? принимает опциональное значение слева и значение по умолчанию справа. Если опциональное значение не пусто, вы получаете его значение (unwrapped); в противном случае — значение по умолчанию.

let stored: Int? = 42
let value = stored ?? 0
print(value)

Значение по умолчанию используется только при отсутствии значения

Значение по умолчанию справа используется только тогда, когда левая часть равна nil. Имеющееся значение, даже 0 или пустая строка, сохраняется.

let count: Int? = 0
let result = count ?? 99
print(result)

Результат не является опциональным

Выражение optional ?? default создаёт необязательное значение, потому что всегда есть значение, к которому можно прибегнуть.

let nickname: String? = nil
let display: String = nickname ?? "Anonymous"
print(display)

Замена безопасного связывания

Без ?? пришлось бы написать конструкцию if/else, чтобы распаковать значение и предоставить значение по умолчанию. Объединение с отсутствующим значением сворачивает это в одно выражение.

let age: Int? = nil
var finalAge: Int
if let unwrapped = age {
    finalAge = unwrapped
} else {
    finalAge = 18
}
print(finalAge)

Та же логика с ??

Вот предыдущий пример, переписанный с использованием объединения с отсутствующим значением. Так короче, и замысел очевиден.

let age: Int? = nil
let finalAge = age ?? 18
print(finalAge)

Объединение при интерполяции

Можно поместить ?? непосредственно внутрь строковой интерполяции, чтобы вывести понятное fallback-значение.

let city: String? = nil
print("City: \(city ?? "Unknown")")

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

Преобразование строки в целое число возвращает опциональное значение. Объединение с отсутствующим значением подставляет значение по умолчанию, если текст не является числом.

let text = "abc"
let number = Int(text) ?? -1
print(number)

Объединение со словарями

Поиск ключа в словаре возвращает опциональное значение. Используйте ??, чтобы предоставить fallback, если ключ отсутствует.

let scores = ["Ann": 90]
let bob = scores["Bob"] ?? 0
print(bob)

Значение по умолчанию можно вычислить

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

func defaultName() -> String {
    return "Player1"
}
let entered: String? = nil
print(entered ?? defaultName())

Типы должны совпадать

Значение по умолчанию должно быть совместимо с типом, заключённым в опциональное значение. Для Int? требуется значение по умолчанию типа Int.

let maybe: Int? = nil
let safe = maybe ?? 100
print(safe + 1)

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

Проверьте объединение с отсутствующим значением.

Итоги: оператор объединения с отсутствующим значением

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

let input: String? = nil
let name = input ?? "Default"
print(name)

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

Урок «Оператор объединения с nil» бесплатный?

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

Чему я научусь в уроке «Оператор объединения с nil»?

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

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

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

Сколько времени занимает урок «Оператор объединения с nil»?

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

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

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

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

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