6. Swift Enum
枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。
swift 中的枚举,比 oc 中的枚举更加强大。在 oc 中枚举的值只接受 Int 类型的值,但是在 swift 中可以接受很多基本类型的值,甚至是另一个枚举类型。swift 中的枚举是属于一等类型,具备 class 的很多特性,例如计算属性,构造函数等。
枚举的基本用法
enum CompassPoint {
case north
case south
case east
case west
}
在 swift 中的枚举支持多种类型,没有默认值,枚举之间也可以用逗号隔开
enum CompassPoint {
case north, south, east, west
}
枚举的使用
let direction: CompassPoint = .east
枚举的关联值
enum Calculate {
case add(Int)
case reduce(Int)
}
let num: Calculate = .add(2)
switch num {
case .add(let a):
print(a) // 2
default:
break
}
这种用法可以在给枚举赋值的时候指定其中的关联值,在用 switch 的时候可以再把关联值带出来。
原始值
以第一个例子为例
1.
enum CompassPoint: String {
case north = "north"
case south = "south"
case east = "east"
case west = "west"
}
上例是以字符串作为原始值
2.
enum CompassPoint: Int {
case north = 0
case south = 1
case east = 2
case west = 3
}
上例是以Int值作为原始值
let direction: CompassPoint = .east
print(direction.rawValue) // 1."east" 2. 2
初始化枚举
let direction = CompassPoint(rawValue: "east") // 可选值,因为这是一个可是白的构造器,可能找不到与之匹配的枚举。
还有更高级的枚举用法在随后的章节中讲解。