if let и сокращённая привязка
Извлекайте значения из необязательных типов в пределах области видимости, включая сокращённую запись Swift 5.7.
«if let и сокращённая привязка» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Зачем связывать опциональные значения
Опциональное значение нужно распаковать (unwrapped), прежде чем использовать содержащееся в нём значение. Конструкция if let безопасно выполняет распаковку только при наличии значения.
let stored: Int? = 5
if let value = stored {
print(value)
}Форма if let
Запишите if let name = optional { ... }. Внутри фигурных скобок name — распакованное необязательное значение. Если опциональное значение равно nil, блок пропускается.
let input: String? = "Swift"
if let text = input {
print(text.count)
}Добавление else
К конструкции можно добавить else, чтобы явно обработать случай отсутствия значения nil.
let age: Int? = nil
if let a = age {
print("Age is \(a)")
} else {
print("No age provided")
}Сокращённая запись связывания
Начиная с версии 5.7, если новая константа имеет то же имя, что и опциональное значение, можно написать просто if let value, без части = value.
let score: Int? = 90
if let score {
print(score)
}Сокращённая и полная записи
Сокращённая запись if let score идентична записи if let score = score. Она уменьшает повторение, когда имена совпадают.
let nickname: String? = "Sam"
if let nickname {
print("Hi \(nickname)")
}Область действия связывания
Распакованная константа существует только внутри тела if. За его пределами опциональное значение по-прежнему остаётся опциональным.
let maybe: Int? = 7
if let maybe {
print(maybe + 1)
}
print(maybe as Any)Связывание после преобразований
if let естественным образом сочетается с преобразованиями, которые могут завершиться неудачей, например Int(string).
let raw = "42"
if let number = Int(raw) {
print(number * 2)
} else {
print("Not a number")
}Связывание значений словаря
Используйте if let, чтобы безопасно прочитать значение словаря, которое может отсутствовать.
let ages = ["Ann": 30]
if let annAge = ages["Ann"] {
print(annAge)
}
if let bobAge = ages["Bob"] {
print(bobAge)
} else {
print("Bob not found")
}Связывание изменяемой копии
Используйте if var, если хотите локально изменить распакованное значение. Это изменение не затронет исходное опциональное значение.
let count: Int? = 10
if var c = count {
c += 5
print(c)
}Избегаем вложенности
Логику, зависящую от значения, можно безопасно разместить внутри блока связывания, избегая принудительной распаковки с помощью !.
let name: String? = "Lia"
if let name {
let upper = name.uppercased()
print(upper)
}Почему не стоит выполнять принудительную распаковку
Принудительная распаковка с помощью ! приводит к сбою, если опциональное значение равно nil. if let — безопасная альтернатива, которая не приводит к сбою.
let value: Int? = nil
if let value {
print(value)
} else {
print("Safe: was nil")
}Быстрая проверка
Проверьте связывание опциональных значений.
Итоги: if let и сокращённое связывание
if let безопасно распаковывает опциональное значение в локальную константу только при наличии значения. Сокращённая запись версии 5.7 if let name избавляет от повторения имени. Предпочитайте её принудительной распаковке.
let x: Int? = 3
if let x { print(x) }Часто задаваемые вопросы
Урок «if let и сокращённая привязка» бесплатный?
Да — полный текст урока «if let и сокращённая привязка» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «if let и сокращённая привязка»?
Извлекайте значения из необязательных типов в пределах области видимости, включая сокращённую запись Swift 5.7. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.
Сколько времени занимает урок «if let и сокращённая привязка»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- if let и сокращённая привязка
- guard let для раннего выхода
- Привязка нескольких необязательных значений
- Шаблон Optional в switch и for