Swift中枚舉的總結以及使用

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

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

任意枚舉成員時要注意的問題:
一、在具備任意枚舉類型中,能夠將其中的成員定位爲不一樣的類型
二、在任意的類型中,能夠不定義成員,從而造成一個空的枚舉類型
定義指定的枚舉成員的注意的問題:
一、在指定數據類型的枚舉類型中,若是原始類型是整型,能夠不指定原始值。若是指定的類型非整型,需指定原始值。
二、在枚舉類型指定數據類型後,其中的成員也都爲此數據類型,不能夠定義其餘類型。
三、在爲成員指定原始值時,原始值必須爲惟一標識的。
四、在指定數據類型的枚舉類型,必須使用case關鍵字定義成員。若是沒有定義成員的話將會報錯。
指定類型的枚舉的定義成員:code

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);

以此進行類推獲取其餘成員的原始值。
固然了也能夠從原始值獲取枚舉的成員值,代碼以下:it

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("沒有找到")
    
}
相關文章
相關標籤/搜索