day02-枚举

99 阅读1分钟

基本定义

enum Result {

    case success

    case failure

}

和oc不同,不会自动从0开始赋值。需要指定原始值类型

支持的原始值类型有:整形,字符串,浮点型,布尔型

原始值

原始值是整形

enum Planet:Int{

    case mercury

    case venus

    case earth

    case mars

}

如果不指定第一个枚举值的原始值,默认从0开始自增

如果指定为1,则从1开始自增

enum Planet2:Int {
    case mercury = 1 
    case venus
    case earth
    case mars 
}

原始值是字符型

enum ASCIIControlCharacter: Character {

    case tab = "\t"

    case lineFeed = "\n"

    case carriageReturn = "\r"

}

原始值是字符串类型

当原始值是字符串的时候,成员名称就是隐式原始值。

enum days:String{

    case monday

    case tue

    case wen

    case thue

    case fri

    case sta

    case sun

}

通过rawvalue访问原始值

let sun = days.sun 
let sun1 = sun.rawValue
let earthr = Planet.earth.rawValue 
let earthr2 = Planet2.earth.rawValue

通过原始值初始化枚举实例

let fri = days(rawValue: "fri")

CaseIterable

遵循CaseIterable协议的枚举,有一个allcases的属性,返回所有枚举值的集合

//枚举成员遵循CaseIterable

enum Dir:CaseIterable{

    case north

    case south

    case east

    case west

}


//可以生成一个allcase的属性,拿到枚举中所有成员的集合,这个集合是数组吗?

for dir in Dir.allCases{

    print(dir)

}