Вопрос проверяет знание правил хранения данных в enum и отличий enum от struct и class.
Нет, enum в Swift не может содержать хранимые свойства. Все данные в enum могут храниться только в associated value конкретных case. Это связано с тем, что enum представляет одно из возможных состояний, а не набор полей. Такое ограничение упрощает модель enum и делает его безопасным. Для дополнительного состояния используют struct или вычисляемые свойства.
Enum в Swift не предназначен для хранения набора независимых свойств. Он описывает состояние, а не структуру данных.
Хранимое свойство — это свойство, которое занимает место в памяти экземпляра типа.
Перед перечислением важно понять, что каждый enum имеет только один активный case.
Enum представляет одно состояние за раз
Разные case могут хранить разные данные
Общие хранимые свойства нарушили бы модель памяти
Компилятору было бы сложнее гарантировать безопасность
Данные передаются через associated value.
enum ScreenState {
case loading
case content(text: String)
case error(code: Int)
}
Можно использовать вычисляемые свойства.
var isError: Bool {
if case .error = self { return true }
return false
}
Enum не поддерживает хранимые свойства намеренно. Если нужен набор полей — лучше использовать struct или class.