Swift switch намного мощнее и безопаснее, чем его аналог в C, с несколькими ключевыми различиями в поведении.
В C выполнение переходит к следующему case по умолчанию, требуя явных break для остановки. В Swift каждый case автоматически завершается после выполнения — break не нужен. Если требуется сквозное поведение, ты можешь явно использовать ключевое слово fallthrough.
Swift switch должны быть исчерпывающими — каждое возможное значение должно быть обработано. Если не все случаи покрыты, компилятор выдаст ошибку. default case можно использовать для выполнения этого требования, когда конкретные случаи не охватывают все возможности.
Swift поддерживает богатое сопоставление с образцом помимо простого сравнения значений:
where — добавление условной логики к caseswitch point {
case let (x, y) where x == y:
print("On the diagonal")
case (0, let y):
print("On Y-axis at \(y)")
default:
break
}
Swift позволяет использовать несколько образцов в одном case через запятую, сокращая дублирование:
case "a", "e", "i", "o", "u":
print("Vowel")
| Возможность | C switch | Swift switch |
|---|---|---|
| Переход | Неявный | Только явный |
| Исчерпывающность | Не требуется | Требуется |
| Сопоставление с образцом | Простые значения | Богатые образцы |
Swift switch statements требуют break statement в конце каждого case, чтобы предотвратить fallthrough на следующий case, так же как в C.
Новый — ещё не проверен сообществом
Вы