Swift中枚舉的總結以及使用


枚舉定義了一組具有相關性的數據,是開發者可以再帶嗎中以一個安全的方式來使用這些值,以又助於提供代碼的可讀性。
在Swift中,枚舉可以分成兩種:任意類型的枚舉和指定類型的枚舉,結構如下:

//任意類型的枚舉
enum EnumTest01{
    
}
//指定類型的枚舉  在指定類型的枚舉中不能是空的
enum EnumTest02:String{
    
}

任意枚舉成員時要注意的問題:
1、在具有任意枚舉類型中,可以將其中的成員定位為不同的類型
2、在任意的類型中,可以不定義成員,從而形成一個空的枚舉類型
定義指定的枚舉成員的注意的問題:
1、在指定數據類型的枚舉類型中,如果原始類型是整型,可以不指定原始值。如果指定的類型非整型,需指定原始值。
2、在枚舉類型指定數據類型后,其中的成員也都為此數據類型,不可以定義其他類型。
3、在為成員指定原始值時,原始值必須為唯一標識的。
4、在指定數據類型的枚舉類型,必須使用case關鍵字定義成員。如果沒有定義成員的話將會報錯。
指定類型的枚舉的定義成員:

enum Enum_names:String{
    case name_01 = "name_01"
    case name_02 = "name_02"
    case name_03 = "name_03"
    case name_04 = "name_04"
}
enum Enum_age:Int{
    case age1
    case age2
    case age3 = 20
    case age4
}

在這里Enum_names:String中的成員都是必須賦值的,但是在Enum_age:Int有時候是沒有必要進行賦值的,如上面的.age1的沒有賦值起原始值為0,age2的原始值為1 如果賦值后如:age3的原始值為20 age4的原始值是21 ,總結就是在沒有賦值的情況下第一個成員為0,以后遞增1如果進行了賦值,從賦值開始后面依次遞增1。打印原值的方法如下:

print(Enum_age.age1.rawValue);

以此進行類推獲取其他成員的原始值。
當然了也可以從原始值獲取枚舉的成員值,代碼如下:

let ageEnum = Enum_age(rawValue: 20)
let nameEnum = Enum_names(rawValue: "name_01")

在任意類型的枚舉類型中,可以定義任意的成員,這些成員是沒有值的,在實例化時可以定義此成員的相關信息,這些信心稱為相關值。定義如下面代碼:

enum Barcode{
    case UPCA(Int,Int,Int)
    case QString(String,String,String)
}

將枚舉成員和switch語句進行匹配時,switch語句必須要和每一個枚舉成員進行匹配,不可以有遺漏,如果開發者不需要匹配每一個枚舉成員,可以提供一個默認的default分之來涵蓋所有沒有明確匹配的成員。

如:

let name:Enum_names = .name_01
//使用default
switch name {
    case .name_01:
    //打印原值
    print(name.rawValue);
    break;
default:
    print("沒有找到")
}
//不使用default
let age:Enum_age = .age2
switch age {
case .age1:
    print(age.rawValue)
case .age2:
    print(age.rawValue)
case .age3:
    print(age.rawValue)
case .age4:
    print(age.rawValue)
}
//相關值的switch的匹配
let barcodeTemp = Barcode.QString("1", "2", "3")
switch barcodeTemp {   
case .QString(let str,let str02,let str03):
    print(str + str02 + str03)
default:
    print("沒有找到")
    
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM