Swift enums — это первоклассные типы, что делает их значительно мощнее, чем enums в большинстве других языков. Они поддерживают associated values, методы, свойства и конформность протоколам.
String, Int или другим литеральным типамEquatable или Codableindirect для самоссылающихся структурenum NetworkError: Error {
case notFound(url: String)
case unauthorized(statusCode: Int)
case unknown
}
enum AppState {
case loading
case success(data: String)
case failure(error: NetworkError)
var isTerminal: Bool {
switch self {
case .loading: return false
default: return true
}
}
}
loading, success или failure типобезопасным способомswitch для исчерпывающей обработки каждого case, что компилятор проверяетПоскольку Swift enums проверяются исчерпывающе на этапе компиляции, они исключают целые категории ошибок времени выполнения. По сравнению с enums в языках вроде Java или C, Swift enums моделируют сложную доменную логику чисто и безопасно, что делает их основным инструментом для написания выразительного, поддерживаемого кода.
Swift перечисления могут иметь associated values, которые хранят разные типы данных для каждого case, позволяя одному enum представлять сложные состояния с контекстной информацией.
Новый — ещё не проверен сообществом
Вы