📅  最后修改于: 2023-12-03 15:05:26.595000             🧑  作者: Mango
Swift 枚举(Enum)是一种定义了一组相关值的数据类型。它们被广泛用于 Swift 编程中,它的语法简洁,易于理解。在本文中,我们将详细了解 Swift 枚举的语法、使用和扩展。
Swift 枚举的基本语法如下:
enum 枚举名 {
// 枚举成员
}
其中,枚举名必须符合 Swift 标识符的命名规则,成员由逗号分隔并位于花括号内。示例:
enum Direction {
case north
case south
case east
case west
}
以上代码定义了一个名为 Direction 的枚举类型,它包含了四个成员。每个成员都代表一个方向。在使用枚举时,我们可以通过它们的名称来访问。
可以通过枚举名和成员名称来访问枚举。示例:
let direction = Direction.west
print(direction)
输出:
west
Swift 枚举可以与原始值相关联。原始值可以是字符串、字符、整数或浮点数等类型。每个枚举成员都有相同的类型的原始值。 示例:
enum Color: String {
case red = "FF0000"
case green = "00FF00"
case blue = "0000FF"
}
print(Color.red.rawValue) // 输出:FF0000
在上面的示例中,枚举类型为 String,成员的原始值分别为 "FF0000","00FF00" 和 "0000FF"。在访问时,我们可以使用成员的 rawValue 属性。
在 Swift 中,关联值是一种将值与枚举成员相关联的方式。它允许枚举成员具有不同的类型和值。示例:
enum UserAction {
case login(String)
case logout(NSDate)
func actionMessage() -> String {
switch self {
case .login(let name):
return "\(name) logged in"
case .logout(let date):
let formatter = NSDateFormatter()
formatter.dateStyle = .MediumStyle
formatter.timeStyle = .ShortStyle
return "Logged out at \(formatter.stringFromDate(date))"
}
}
}
let action = UserAction.login("martin")
print(action.actionMessage()) // 输出:martin logged in
在上面的示例中,我们定义了一个 UserAction 枚举类型,它有两个成员: login 和 logout。login 成员带有一个 NSString 类型的关联值,logout 成员带有一个 NSDate 类型的关联值。在使用时,我们可以访问关联值并且执行特定的逻辑。
在 Swift 中,枚举类型可以定义方法。示例:
enum Product: Int {
case iPhone = 0
case iPad = 1
case AppleWatch = 2
func productName() -> String {
switch self {
case .iPhone:
return "iPhone"
case .iPad:
return "iPad"
case .AppleWatch:
return "Apple watch"
}
}
}
let product = Product.iPhone
print(product.productName()) // 输出:iPhone
在上面的示例中,我们定义了一个 Product 枚举类型,它有三个成员: iPhone, iPad 和 AppleWatch。它还有一个名为 productName 的方法,该方法返回一个字符串,表示产品名称。
Swift 中的枚举类型还可以定义静态方法。示例:
enum Currency: String {
case USD = "United States Dollar"
case EUR = "Euro"
case GBP = "Great Britain Pound"
static func allCurrencies() -> [String] {
return [USD.rawValue, EUR.rawValue, GBP.rawValue]
}
}
let currencies = Currency.allCurrencies()
print(currencies) // 输出:["United States Dollar", "Euro", "Great Britain Pound"]
在上面的示例中,我们定义了一个 Currency 枚举类型,它有三个成员: USD、EUR 和 GBP。它还有一个名为 allCurrencies 的静态方法,该方法返回一个字符串数组,表示所有支持的货币。
在 Swift 中,可以扩展已经定义的枚举类型以添加新方法。示例:
enum Gender: String {
case Male = "男"
case Female = "女"
}
extension Gender {
func zhCNName() -> String {
switch self {
case .Male:
return "男"
case .Female:
return "女"
}
}
}
let gender = Gender.Male
print(gender.zhCNName()) // 输出:男
在上面的示例中,我们已经定义了一个 Gender 枚举类型。我们使用扩展来添加另一个名为 zhCNName 的方法来返回性别的中文名。
Swift 枚举是一个非常强大,简单又易来使用的数据类型。可以列举出其特点:
这些特点使 Swift 枚举非常灵活,可以轻松应对许多编程场景。