Swift 枚举
Swift 编程语言中的枚举(Enumeration)是一种非常强大的特性,通常用于定义一组相关的值,使你能在代码中以一种类型安全的方式来处理这些值。Swift 中的枚举比其他一些语言(如 C 或 Objective-C)中的更为灵活和功能强大。以下是 Swift 枚举的一些关键特性和用法:
基本用法
可以用 enum
关键字来定义枚举。例如,定义一个表示指南针方向的枚举:
enum CompassPoint {
case north
case south
case east
case west
}
使用枚举
可以像这样使用枚举:
var direction = CompassPoint.north
direction = .east // 已知上下文为 CompassPoint 类型,因此可以使用简写
关联值
Swift 的枚举可以存储称为关联值的附加信息。关联值可以在实例化枚举成员时提供:
enum Barcode {
case upc(Int, Int, Int, Int)
case qrCode(String)
}
var productBarcode = Barcode.upc(8, 85909, 51226, 3)
productBarcode = .qrCode("ABCDEFGHIJKLMN")
原始值
枚举成员可以用相同类型的默认值(称为原始值)预先填充。你可以定义一个原始值类型,Swift 将自动为每个成员分配一个值:
enum Planet: Int {
case mercury = 1
case venus
case earth
case mars
}
let earth = Planet.earth.rawValue // 返回 3
初始化
可以通过原始值初始化枚举,若该原始值对应一个枚举成员则返回该成员;否则返回 nil
:
if let somePlanet = Planet(rawValue: 3) {
print(somePlanet) // 输出 "earth"
}
Switch 语句匹配
枚举非常适合与 switch
语句联用:
switch direction {
case .north:
print("North")
case .south:
print("South")
case .east:
print("East")
case .west:
print("West")
}
递归枚举
当枚举成员拥有自身类型的关联值时,枚举被称为递归枚举,你可以用 indirect
关键字来声明:
indirect enum ArithmeticExpression {
case number(Int)
case addition(ArithmeticExpression, ArithmeticExpression)
case multiplication(ArithmeticExpression, ArithmeticExpression)
}
递归枚举可以帮助你构建复杂的数据结构和算法,比如用来表示和求解数学表达式。
Swift 枚举通过许多高级功能增强了代码的灵活性和安全性,使其成为处理离散选项时的强大工具。