Swift.png
枚舉的介紹
- 枚舉為
一組相關的值定義了一個共同的類型
,使你可以在你的代碼中以類型安全的方式來使用這些值。 - 給枚舉的
成員類型賦值一個值
,該值可以是 字符串,字符,或是一個整型值或浮點數。 - 在swift中,枚舉類型默認情況下
不表示任何類型
- 在oc語言中枚舉指定相關名稱為一組
整型值
- 枚舉值僅僅是一個抽象的符號,并不代表任何類型,如果想要綁定原始值,必須指明枚舉的類型
枚舉的語法
- 使用
enum
關鍵詞,來創建枚舉并且把它們的整個定義放在一對大括號內
enum 枚舉名稱 {
// 枚舉定義放在這里
case 定義1
case 定義2
}
// 枚舉 方向
enum CompassPoint {
case north
case south
case east
case west
}
print(CompassPoint.north);
枚舉原始值: 就是在枚舉名稱后面 跟上數據類型
- 格式:
enum 名稱:數據類型{}
// Int:表示里面存儲的 原始值 的類型
enum CompassPoint:Int {
case north = 1
case south = 2
case east = 4
case west = 5
}
print(CompassPoint.north);
//打印結果:north
//原始值 rawValue
print(CompassPoint.north.rawValue);
//打印結果:1
關聯值
- 將枚舉的
成員值
與其他類型的關聯
存儲在一起 - 使用場景: 有明確的種類
//分數枚舉
enum Score {
//具體的分數值 用 Int關聯
case points(Int)
//ABCD的分數值 用 字符 關聯
case grade(Character)
}
var score = Score.points(96);
print("看看分數:\(score)"); //打印結果:points(96)
switch score {
case let .points(i):
print(i,"points");
case let .grade(i):
print(i,"grade");
default:
print("沒有結果");
}
遞歸枚舉
在遞歸枚舉中,需要用到一個關鍵字
indirect
告訴系統這個一個 遞歸枚舉
//AirthExpr 枚舉的名稱 算術表達式
indirect enum AirthExpr{
//數值類型
case number(Int)
//求和 參數:要傳入枚舉類型
case sum(AirthExpr,AirthExpr)
//減法
case difference(AirthExpr,AirthExpr)
}
// 枚舉類型的值
let num1 = AirthExpr.number(2);
let num2 = AirthExpr.number(3);
//算數求和 枚舉值
let sum = AirthExpr.sum(num1, num2);
//定義一個函數 解析枚舉
//參數: 傳入的枚舉類型
func warp (expr:AirthExpr) ->Int{
switch expr {
//返回對應的傳入值
case let .number(value):
return value;
//計算求和
case let .sum(v1, v2):
return warp(expr: v1) + warp(expr: v2);
//計算減法
case let .difference(v1, v2):
return warp(expr: v1) - warp(expr: v2);
}
}
let res = warp(expr: sum);
print("看看結算結果:\(res)");
// 看看結算結果:5