Шаблон Optional в switch и for
Сопоставляйте необязательные значения с шаблонами case let.
«Шаблон Optional в switch и for» — бесплатный урок Swift Academy на CoddyKit. Это урок 4 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Опциональные значения в операторе выбора
Можно напрямую выполнить выбор по опциональному значению. Ветви .some(value) и .none соответствуют наличию значения и его отсутствию.
let value: Int? = 7
switch value {
case .some(let n):
print("Got \(n)")
case .none:
print("Nothing")
}Сокращённый шаблон с ?
Запись case let x? является сокращением для .some(x). Знак ? в конце означает «распаковать значение в x».
let value: String? = "Swift"
switch value {
case let text?:
print(text.uppercased())
case nil:
print("none")
}Прямое сопоставление с отсутствующим значением
Ветвь с отсутствующим значением можно сопоставить с помощью литерала nil вместо .none; так запись выглядит естественнее.
let value: Int? = nil
switch value {
case let n?:
print(n)
case nil:
print("no value")
}Сопоставление с конкретными значениями
Можно сочетать конкретные распакованные значения с общим шаблоном распаковки.
let status: Int? = 404
switch status {
case 200?:
print("OK")
case 404?:
print("Not Found")
case let code?:
print("Other: \(code)")
case nil:
print("No status")
}Привязка значений в циклах
При переборе опциональных значений запись for case let x? in array автоматически пропускает элементы nil и распаковывает остальные.
let items: [Int?] = [1, nil, 3, nil, 5]
for case let n? in items {
print(n)
}Как цикл фильтрует значения
Шаблон case let n? сопоставляется только с элементами, не равными nil, поэтому тело цикла выполняется лишь для присутствующих значений.
let names: [String?] = ["Ann", nil, "Bo"]
for case let name? in names {
print(name.count)
}Эквивалентная запись с if let
Того же результата можно добиться с помощью if let внутри обычного цикла, но for case let x? записывается короче.
let items: [Int?] = [2, nil, 4]
for item in items {
if let item {
print(item)
}
}Сопоставление опциональных перечислений
Шаблон опционального значения сочетается с другими шаблонами, например с сопоставлением конкретных значений внутри опционального значения.
let codes: [Int?] = [1, 2, nil, 3]
for case let c? in codes where c % 2 == 1 {
print("odd: \(c)")
}Дополнительное условие в цикле
Добавьте предложение where, чтобы после распаковки выполнить дополнительную фильтрацию в цикле с привязкой значений.
let scores: [Int?] = [40, nil, 80, 95]
for case let s? in scores where s >= 80 {
print("high: \(s)")
}Оператор выбора с дополнительным условием
Внутри оператора выбора по опциональному значению распакованную привязку можно уточнить с помощью предложения where.
let value: Int? = 12
switch value {
case let n? where n > 10:
print("big: \(n)")
case let n?:
print("small: \(n)")
case nil:
print("none")
}Зачем нужны эти шаблоны
Шаблоны опциональных значений позволяют обработать присутствующие и отсутствующие значения в одной исчерпывающей структуре и сократить количество разрозненных проверок на nil.
let result: String? = nil
switch result {
case let r?:
print("Value: \(r)")
case nil:
print("Empty result")
}Быстрая проверка
Проверьте шаблоны опциональных значений.
Повторение: шаблоны опциональных значений в выборе и цикле
Используйте case let x? (сокращение для .some) и case nil в операторе выбора, а for case let x? — для перебора элементов, не равных nil, с их распаковкой и возможным уточнением с помощью where.
let xs: [Int?] = [10, nil, 20]
for case let x? in xs { print(x) }Часто задаваемые вопросы
Урок «Шаблон Optional в switch и for» бесплатный?
Да — полный текст урока «Шаблон Optional в switch и for» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Шаблон Optional в switch и for»?
Сопоставляйте необязательные значения с шаблонами case let. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 4 из 4.
Сколько времени занимает урок «Шаблон Optional в switch и for»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- if let и сокращённая привязка
- guard let для раннего выхода
- Привязка нескольких необязательных значений
- Шаблон Optional в switch и for