八、枚举

枚举为一组相关的值定义了任意类型的关联值存储到枚举成员中。

1.定义和创建

用case表示不同的枚举值,同一行枚举用“,”隔开
enum 枚举类型 {
    case 枚举值1
    case 枚举值2,枚举值3
}
//.Spring的默认值为spring
enum Seasons {
    case Spring,Summer,Sutumn,Sinter
}

let currentSeason : Seasons = Seasons.Summer
print(currentSeason); //summer

2.枚举匹配

switch currentSeason{
    case .Spring:
        print("123")
    default:
        print("this is not Spring"). 
} //this is not Spring

3.关联值

//当检测不同的类型的时候,在case的分支代码中提取每个关联值作为一个常量
(用let前缀)或者作为一个变量(用var前缀)来使用:
enum Barcode {
    case upc(Int,Int,Int,Int)
    case qrCode(String)
}

var productBarcode = Barcode.upc(8, 85909, 51226, 3)
switch productBarcode {
    case .upc(let num1,let num2,let num3,let num4):
        print("upc")
    case .qrCode(let num):
        print("qrCode")
}
//upc

4.原始值(默认值)

enum ASCIIControlCharacter: Character {
    case tab = "\t"
    case lineFeed = "\n"
    case carriageReturn = "\r"
}

5.原始值的隐式赋值

当枚举定义为整数时,第一个枚举成员默认为0;当第一个枚举成员为1时,后面依次
+1;

通过rawValue来获取枚举成员的值 或 访问枚举成员;

enum tempType :Int{
    case table,table2,table3
}
print(tempType.table) //table
print(tempType.table2.rawValue) //1
//初始化枚举实例,返回类型为可选类型
let possibleType = tempType(rawValue: 2)

6.递归枚举:有一个或多个枚举成员使用该枚举类型的实例作为关联值

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容