[Swift] 枚举

在 Swift 中,枚举的作用不仅仅是定义一组常量或提高程序的可读性了,它还具有面向对象特性。

首先枚举定义的成员值不再是一个具体的数值类型,而就是所定义的枚举类型。

enum MobilePhoneOS {
    case iOS, Android
}

let myPhoneOS = MobilePhoneOS.iOS
print(type(of: myPhoneOS)) // MobilePhoneOS

当我们需要为每个成员提供某个具体类型的默认值时,可以为枚举类型提供原始值(rawValue)声明,这些原始值类型可以是字符,字符串,整型和浮点型等。

enum MobilePhoneOS: Int {
    case iOS = 0, Android
}

let myPhoneOS = MobilePhoneOS.Android
print(myPhoneOS.rawValue) // 1

还有一种枚举声明,其成员值可关联一个元组类型,在生成实例时赋值。

enum Code {
    case BarCode(Int, Int, Int)
    case QRCode(String)
}

func scan(_ code: Code) {
    switch code {
    case let .BarCode(number, identifier, check):
        print("BarCode with value of \(number), \(identifier), \(check).")
    case let .QRCode(string):
        print("QRCode with value of \(string).")
    }
}

let barCode = Code.BarCode(1, 2, 3)
let QRCode = Code.QRCode("123")
scan(barCode) // BarCode with value of 1, 2, 3.
scan(QRCode) // QRCode with value of 123.

因为具有面向对象的特性,Swift 中的枚举类型还可以添加实例方法和静态方法。

你可能感兴趣的:([Swift] 枚举)