Enum — тип с фиксированным набором кейсов; кейсы могут нести associated values и методы, enum — value type.
Разбор
- Может соответствовать
RawRepresentable (String/Int raw value).
- Associated values делают enum мощным sum-type (как sealed в Kotlin).
switch по enum часто должен быть исчерпывающим.
- Кейсы — не подклассы; это альтернативы одного типа.
Пример
enum State {
case loading
case ready(String)
case failed(Error)
}
Итог
Enum моделирует взаимоисключающие состояния с данными.