0Pricing
Swift Academy · Урок

Шаблон 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 — локальная установка не требуется.

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

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