Ответ
Enum (перечисление) — это тип, который определяет конечный набор связанных значений, обеспечивая типобезопасность и читаемость кода.
Ключевые особенности:
- Типобезопасность: компилятор проверяет корректность использования вариантов.
- Могут содержать методы, вычисляемые свойства и соответствовать протоколам.
- Поддерживают ассоциированные значения для хранения дополнительных данных.
- Имеют raw values (необработанные значения) строкового, символьного или целочисленного типа.
Пример базового enum:
enum CompassDirection {
case north
case south
case east
case west
}
let direction = CompassDirection.north
switch direction {
case .north: print("Север")
// ...
}
Пример с ассоциированными значениями:
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
let product = Barcode.upc(8, 85909, 51226, 3)
switch product {
case .upc(let numberSystem, let manufacturer, let productCode, let check):
print("UPC: (numberSystem)-(manufacturer)-(productCode)-(check)")
case .qrCode(let code):
print("QR: (code)")
}
Почему это важно: Enums идеальны для моделирования ограниченных вариантов (состояния, ошибки, типы данных), исключая недопустимые значения на этапе компиляции.