Swift教程之枚举类型详解

2020-01-08 22:45:09丽君

case let .UPCA(numberSystem, identifier, check):
    println("UPC-A with value of (numberSystem), (identifier), (check).")
case let .QRCode(productCode):
    println("QR code with value of (productCode).")
}
// prints "QR code with value of ABCDEFGHIJKLMNOP."

 

4、原始值

在关联值的条形码的例子演示了一个枚举的成员如何能声明它们存储不同类型的关联值。作为替代关联值,枚举成员可以拿出预先填入缺省值(称为原始值),从而具有相同的类型。

这里是一个存储原始的ASCII值命名枚举成员的一个例子:

 

复制代码  
enum ASCIIControlCharacter: Character {
    case Tab = "t"
    case LineFeed = "n"
    case CarriageReturn = "r"
}

 

在这里,原始值被定义为字符类型的枚举叫做ASCIIControlCharacter,并设置了一些比较常见的ASCII控制字符。字符值的字符串和字符的描述。

注意,原始值是不相同关联值。原始值设置为预填充的值时,应先在你的代码中定义枚举,像上述三个ASCII码。对于一个特定的枚举成员的原始值始终是相同的。当你创建一个基于枚举的常量或变量的新成员的关联值设置,每次当你这样做的时候可以是不同的。

原始值可以是字符串,字符,或任何整数或浮点数类型。每个原始值必须在它的枚举中唯一声明。当整数被用于原始值,如果其他​​枚举成员没有值时,它们自动递增。

下面列举的是一个细化的早期Planet枚举,使用原始整数值来表示每个Planet的太阳系的顺序:

 

复制代码  
enum Planet: Int {
    case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
自动递增意味着Planet.Venus具有2的原始值,依此类推。

 

访问其toRaw方法枚举成员的原始值:

 

复制代码  
let earthsOrder = Planet.Earth.toRaw()
// earthsOrder is 3
使用枚举的fromRaw方法来试图找到一个特定的原始值枚举成员。这个例子识别Uranus的位置通过原始值为7: