Привязка нескольких необязательных значений
Извлекайте несколько необязательных значений в одном условии.
«Привязка нескольких необязательных значений» — бесплатный урок 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 — локальная установка не требуется.
Все уроки этого курса
- if let и сокращённая привязка
- guard let для раннего выхода
- Привязка нескольких необязательных значений
- Шаблон Optional в switch и for