Swift 枚舉

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


最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 枚舉為一組相關的值定義了一個共同的類型,使得可以在代碼中以類型安全的方式來使用這些值。 如果熟悉 C 語言,會知道...
    窮人家的孩紙閱讀 861評論 1 4
  • 枚舉簡單的說也是一種數據類型,只不過是這種數據類型只包含自定義的特定數據,它是一組有共同特性的數據的集合。 Swi...
    零度_不結冰閱讀 346評論 0 0
  • 枚舉定義一組相關值的公共類型,并允許您在代碼中以類型安全的方式使用這些值。 如果你熟悉C,你會知道C枚舉分配相關的...
    Joker_King閱讀 262評論 0 0
  • 首先感覺Swift的枚舉確實相對OC來說功能和語法都擴展很多。首先說一下枚舉的定義。 枚舉聲明的類型是囊括可能狀態...
    正直走閱讀 300評論 0 0
  • 本章將會介紹 閉包表達式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動閉包枚舉語法使用Switch語句匹配枚舉值關聯值原...
    寒橋閱讀 1,576評論 0 3