0Pricing
Swift Academy · Урок

Привязка нескольких необязательных значений

Извлекайте несколько необязательных значений в одном условии.

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

Одновременная привязка нескольких значений

Можно распаковать несколько опциональных значений в одном if let, разделив их запятыми. Все значения должны быть не равны nil, чтобы тело выполнилось.

let a: Int? = 1
let b: Int? = 2
if let a, let b {
    print(a + b)
}

Всё или ничего

Если любое опциональное значение в списке равно nil, весь блок пропускается. Распаковка выполняется по принципу «всё или ничего».

let first: String? = "Ada"
let last: String? = nil
if let first, let last {
    print("\(first) \(last)")
} else {
    print("Missing a name")
}

Полная форма записи

Полная форма использует явные присваивания: if let a = optA, let b = optB. В сокращённой форме повторяющиеся имена опускаются.

let optX: Int? = 10
let optY: Int? = 20
if let x = optX, let y = optY {
    print(x * y)
}

Смешивание привязок и условий

Логические условия можно чередовать с привязками. Последующие условия могут использовать ранее распакованные значения.

let age: Int? = 25
if let age, age >= 18 {
    print("Adult: \(age)")
}

Зависимые распаковки

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

let dict = ["key": "42"]
if let text = dict["key"], let number = Int(text) {
    print(number + 8)
}

Порядок имеет значение

Привязки вычисляются по порядку и используют укороченное вычисление. Если первая привязка завершается неудачей, последующие вообще не вычисляются.

func parse(_ s: String?) -> Int? {
    print("parsing")
    return s.flatMap { Int($0) }
}
let a: Int? = nil
if let a, let b = parse("5") {
    print(a + b)
} else {
    print("skipped")
}

Несколько привязок в проверке

Тот же стиль с разделением запятыми работает и в guard let, распаковывая несколько значений перед продолжением выполнения.

func makeFullName(_ first: String?, _ last: String?) -> String {
    guard let first, let last else { return "Unknown" }
    return "\(first) \(last)"
}
print(makeFullName("Grace", "Hopper"))

Объединение преобразований

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

let wInput = "4"
let hInput = "5"
if let w = Int(wInput), let h = Int(hInput) {
    print("Area: \(w * h)")
}

Избегаем вложенных проверок

Без нескольких привязок пришлось бы вкладывать блоки if let, создавая пирамиду. Запись с запятыми делает структуру плоской.

let p: Int? = 2
let q: Int? = 3
if let p {
    if let q {
        print(p + q)
    }
}

Плоская версия

Вот та же логика, что и в предыдущем вложенном примере, записанная в плоском виде с одной группой привязок.

let p: Int? = 2
let q: Int? = 3
if let p, let q {
    print(p + q)
}

С завершающим условием

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

let xs = "3"
let ys = "9"
if let x = Int(xs), let y = Int(ys), x < y {
    print("\(x) is less than \(y)")
}

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

Проверьте привязку нескольких опциональных значений.

Повторение: привязка нескольких опциональных значений

Распаковывайте несколько опциональных значений в одном if let или guard let, разделяя их запятыми. Такая распаковка выполняется по принципу «всё или ничего», идёт слева направо, поддерживает зависимые привязки и может сочетаться с логическими условиями.

let a: Int? = 1
let b: Int? = 2
if let a, let b { print(a + b) }

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

Урок «Привязка нескольких необязательных значений» бесплатный?

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

Чему я научусь в уроке «Привязка нескольких необязательных значений»?

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

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

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

Сколько времени занимает урок «Привязка нескольких необязательных значений»?

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

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

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

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

  1. if let и сокращённая привязка
  2. guard let для раннего выхода
  3. Привязка нескольких необязательных значений
  4. Шаблон Optional в switch и for
← Назад к Swift Academy