Составные варианты и 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 — локальная установка не требуется.
Все уроки этого курса
- Исчерпывающий switch по значениям
- Сопоставление диапазонов и кортежей
- Привязка значений и предложения where
- Составные варианты и fallthrough