枚舉定義了一個通用類型的一組相關的值,使咱們能夠在本身的代碼中以一個安全的方式來使用這些值。安全
枚舉的結構:bash
enum SomeEnumeration {
// enumeration definition goes here
}
複製代碼
枚舉的使用:網站
// 定義枚舉
enum Direction {
case east
case south
case west
case north
}
// 調用枚舉
var direct = Direction.east
print("如今的方向是:\(direct)")
out:
如今的方向是:east
複製代碼
定義枚舉時,裏面的case看上去就是爲switch準備的,天生一對.ui
// 調用枚舉
var direct = Direction.east
switch direct {
case Direction.east:
do{
print("如今的方向是:東")
}
case Direction.south:
do{
print("如今的方向是:南")
}
case Direction.west:
do{
print("如今的方向是:西")
}
case Direction.north:
do{
print("如今的方向是:北")
}
}
out:
如今的方向是:東
複製代碼
咱們能夠定義Swift的枚舉存儲任何類型的相關值,若是須要,每一個成員的數據類型能夠是各不相同的。枚舉的這種特性與其餘語言中的可辨識聯合,標籤聯合,或變體類似。例如,假設一個庫存跟蹤系統須要利用兩種不一樣類型的條形碼來跟蹤商品。spa
var goods = Barcode.UPCA(8, 855, 11, 3)
goods = Barcode.QRCode("TEST")
switch goods {
case let .UPCA(first, second, third, forth):
do{
print("first is:\(first), second is \(second), third is \(third), forth is \(forth)")
}
case let .QRCode(qr):
do{
print("qr is \(qr)")
}
}
out:
qr is TEST
複製代碼
做爲性管制的替代物,枚舉成員能夠被默認值(原始值)預填充,這些原始值有相同的類型,如:.net
enum Animate: Int {
case pig = 1
case dog
case bird
case frog
}
print("dog 的初始值:\(Animate.dog.rawValue),hashValue:\(Animate.dog.hashValue)")
out:
dog 的初始值:2,hashValue:1
複製代碼
我的網站code
微博:順揚skyget
簡書:順揚sky博客
掘金:順揚skystring