揭开 Swift 枚举关联值和原始值的奥秘
2023-12-29 02:53:44
Swift 中的枚举是一种强大的数据类型,可让您在有限的一组相关值之间进行选择。在某些情况下,您可能希望关联值与枚举中的每个 case 相关联,而原始值则表示枚举 case 的底层表示。本文将深入探讨 Swift 中枚举的关联值和原始值,并提供一个嵌套枚举示例。
关联值
关联值允许您存储与枚举 case 相关的数据。例如,您可以使用关联值来存储错误消息、HTTP 状态代码或用户偏好。要声明具有关联值的枚举,请使用以下语法:
enum Result<T> {
case success(T)
case failure(Error)
}
在这个示例中,Result 是一个泛型枚举,它可以存储成功值或失败值。success case 有一个关联值 T,它可以是任何类型的数据。failure case 也有一个关联值 Error,它代表与失败 case 关联的错误。
要访问关联值,请使用点语法。例如,以下代码获取 Result 枚举的关联值:
let result = Result.success(10)
let value = result.value // 10
原始值
原始值是枚举 case 的底层表示。它们通常是整数或字符串。要声明具有原始值的枚举,请使用以下语法:
enum HTTPStatusCode: Int {
case ok = 200
case notFound = 404
case internalServerError = 500
}
在这个示例中,HTTPStatusCode 枚举是 Int 的原始值。每个 case 都分配了一个整数值,该值代表 HTTP 状态代码。要访问原始值,请使用原始值名称。例如,以下代码获取 ok case 的原始值:
let statusCode = HTTPStatusCode.ok.rawValue // 200
嵌套枚举
嵌套枚举是定义在其他枚举内部的枚举。它们用于对枚举 case 进行进一步分类。要声明嵌套枚举,请使用以下语法:
enum Result {
case success
case failure(Error)
enum Error: Error {
case networkError
case parseError
case otherError
}
}
在这个示例中,Error 枚举是嵌套在 Result 枚举中的。它用于对失败 case 进行进一步分类。要访问嵌套枚举,请使用范围解析运算符 (::)。例如,以下代码获取嵌套枚举 Error 中的 networkError case:
let error = Result.failure(.networkError)
结论
关联值和原始值是 Swift 枚举中强大的特性,可让您存储和表示与枚举 case 相关的数据。嵌套枚举使您可以进一步组织和分类枚举 case。通过理解和使用这些特性,您可以创建灵活且高效的枚举,以满足您的特定需求。