0Pricing
Swift Academy · Урок

Составные варианты и fallthrough

Объединяйте варианты и намеренно используйте fallthrough.

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

Составные ветви

Одна ветвь может сопоставляться с несколькими значениями, разделёнными запятыми: case "a", "b":. Для всех перечисленных значений выполняется один и тот же код.

let letter = "a"
switch letter {
case "a", "e", "i", "o", "u":
    print("Vowel")
default:
    print("Consonant")
}

Зачем нужны составные ветви

Составные ветви позволяют не дублировать одинаковые тела. Они объединяют значения, которые должны обрабатываться одинаково.

let day = 6
switch day {
case 6, 7:
    print("Weekend")
case 1, 2, 3, 4, 5:
    print("Weekday")
default:
    print("Invalid day")
}

Составные ветви с диапазонами

В одной составной ветви можно сочетать диапазоны и отдельные значения.

let code = 204
switch code {
case 200, 201, 204:
    print("Success")
case 400...499:
    print("Client error")
default:
    print("Other")
}

Составные ветви и привязки

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

let point = (0, 5)
switch point {
case (let v, 0), (0, let v):
    print("On an axis at distance \(v)")
default:
    print("Off the axes")
}

Переход к следующей ветви

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

let n = 1
switch n {
case 1:
    print("one")
    fallthrough
case 2:
    print("two")
default:
    print("done")
}

Как работает переход к следующей ветви

fallthrough безусловно переносит выполнение в тело следующей ветви; условие этой ветви повторно не проверяется. Используйте такой переход осознанно.

let level = 3
switch level {
case 3:
    print("Level 3 perks")
    fallthrough
case 2:
    print("Level 2 perks")
    fallthrough
case 1:
    print("Level 1 perks")
default:
    break
}

Переход к следующей ветви игнорирует шаблоны

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

let x = 10
switch x {
case 10:
    print("ten")
    fallthrough
default:
    print("reached default")
}

Составные ветви и переход к следующей

Чтобы выполнять один и тот же код для нескольких значений, отдавайте предпочтение составной ветви. Используйте fallthrough только для действительно каскадного поведения.

let grade = "B"
switch grade {
case "A", "B":
    print("Passing")
default:
    print("Other")
}

Накопление с переходом к следующей ветви

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

let tier = 2
var perks = [String]()
switch tier {
case 2:
    perks.append("Premium")
    fallthrough
case 1:
    perks.append("Basic")
default:
    break
}
print(perks)

Сочетание обоих подходов

В одном операторе выбора можно использовать и составные ветви, и переход к следующей ветви — там, где каждый подход лучше подходит.

let n = 0
switch n {
case 0:
    print("zero")
    fallthrough
case 1, 2:
    print("small")
default:
    print("large")
}

Замечание о читаемости

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

let status = "warn"
switch status {
case "warn", "error":
    print("Needs attention")
default:
    print("OK")
}

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

Проверьте составные ветви и переход к следующей ветви.

Повторение: составные ветви и переход к следующей ветви

Используйте составные ветви, разделённые запятыми, чтобы несколько значений выполняли одно тело. Используйте явное ключевое слово fallthrough только тогда, когда намеренно хотите передать выполнение следующей ветви.

let n = 2
switch n {
case 1, 2: print("small")
default: print("big")
}

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

Урок «Составные варианты и fallthrough» бесплатный?

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

Чему я научусь в уроке «Составные варианты и fallthrough»?

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

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

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

Сколько времени занимает урок «Составные варианты и fallthrough»?

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

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

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

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

  1. Исчерпывающий switch по значениям
  2. Сопоставление диапазонов и кортежей
  3. Привязка значений и предложения where
  4. Составные варианты и fallthrough
← Назад к Swift Academy