The Swift Programming Language-官方教程精译Swift(9) 枚举-- --Enumerations
枚举定义了一个通用类型的一组相关的值,使你可以在你的代码中以一个安全的方式来使用这些值。
 enum SomeEumeration {
     // enumeration definition goes here
 } 
 enum CompassPoint {
     case North
     case South
     case East
     case West
 } 
 enum Planet {
     case Mercury, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Nepturn
 } 
var directionToHead = CompassPoint.West
directionToHead = .East
directionToHead = .South
switch directionToHead {
case .North:
println("Lots of planets have a north")
case .South:
println("Watch out for penguins")
case .East:
println("Where the sun rises")
case .West:
println("Where the skies are blue")
}
// prints "Watch out for penguins”
你可以如此理解这段代码:
let somePlanet = Planet.Earth
switch somePlanet {
case .Earth:
println("Mostly harmless")
default:
println("Not a safe place for humans")
}
// prints "Mostly harmless”


 enum Barcode {
     case UPCA(Int, Int, Int)
     case QRCode(String)
 } 
var productBarcode = Barcode.UPCA(, 85909_51226, )
 productBarcode = .QRCode("ABCDEFGHIJKLMNOP") 
 switch productBarcode {
 case .UPCA(let numberSystem, let identifier, let check):
     println("UPC-A with value of \(numberSystem), \(identifier), \(check).")
 case .QRCode(let productCode):
     println("QR code with value of \(productCode).")
 }
 // prints "QR code with value of ABCDEFGHIJKLMNOP.” 
 switch productBarcode {
 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." 
 enum ASCIIControlCharacter: Character {
     case Tab = "\t"
     case LineFeed = "\n"
     case CarriageReturn = "\r"
 } 
 enum Planet: Int {
     case Mercury = , Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
 } 
let earthsOrder = Planet.Earth.toRaw()
// earthsOrder is 3
使用枚举的fromRaw方法来试图找到具有特定原始值的枚举成员。这个例子通过原始值7识别Uranus:
let possiblePlanet = Planet.fromRaw()
// possiblePlanet is of type Planet? and equals Planet.Uranus
然而,并非所有可能的Int值都可以找到一个匹配的行星。正因为如此,fromRaw方法可以返回一个可选的枚举成员。在上面的例子中,possiblePlanet是Planet?类型,或“可选的Planet”。
let positionToFind =
if let somePlanet = Planet.fromRaw(positionToFind) {
switch somePlanet {
case .Earth:
println("Mostly harmless")
default:
println("Not a safe place for humans")
}
} else {
println("There isn't a planet at position \(positionToFind)")
}
// prints "There isn't a planet at position 9
The Swift Programming Language-官方教程精译Swift(9) 枚举-- --Enumerations的更多相关文章
- The Swift Programming Language-官方教程精译Swift(1)小试牛刀
		
通常来说,编程语言教程中的第一个程序应该在屏幕上打印“Hello, world”.在 Swift 中,可以用一行代码实现: println("hello, world") 如果你 ...
 - The Swift Programming Language-官方教程精译Swift(8)闭包 -- Closures
		
闭包是功能性自包含模块,可以在代码中被传递和使用. Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似. 闭包可以捕获和存储其 ...
 - The Swift Programming Language-官方教程精译Swift(7)函数 -- Functions
		
函数 函数是执行特定任务的代码自包含块.通过给定一个函数名称标识它是什么,并在需要的时候使用该名称来调用函数以执行任务. Swift的统一的功能语法足够灵活的,可表达任何东西,无论是不带参数名称的简单 ...
 - The Swift Programming Language-官方教程精译Swift(6)控制流--Control Flow
		
Swift提供了类似C语言的流程控制结构,包括可以多次执行任务的for和while循环,基于特定条件选择执行不同代码分支的if和switch语句,还有控制流程跳转到其他代码的break和continu ...
 - The Swift Programming Language-官方教程精译Swift(5)集合类型 -- Collection Types
		
Swift语言提供经典的数组和字典两种集合类型来存储集合数据.数组用来按顺序存储相同类型的数据.字典虽然无序存储相同类型数据值但是需要由独有的标识符引用和寻址(就是键值对). Swift语言里的数 ...
 - The Swift Programming Language-官方教程精译Swift(4)字符串和字符
		
String 是一个有序的字符集合,例如 "hello, world", "albatross".Swift 字符串通过 String 类型来表示,也可以表示为 ...
 - The Swift Programming Language-官方教程精译Swift(3)基本运算符
		
运算符是检查, 改变, 合并值的特殊符号或短语. 例如, 加号 + 把计算两个数的和(如 let i = 1 + 2). 复杂些的运行算包括逻辑与&&(如 if enteredDoor ...
 - The Swift Programming Language-官方教程精译Swift(2)基础知识
		
Swift 的类型是在 C 和 Objective-C 的基础上提出的,Int是整型:Double和Float是浮点型:Bool是布尔型:String是字符串.Swift 还有两个有用的集合类型,Ar ...
 - 一群牛人翻译:The Swift Programming Language 中文版
		
无聊闲逛GIthub,看到一群牛人在github上创建了一个关于Switf的文档翻译项目 The Swift Programming Language 中文版 项目地址:中文版 Apple 官方 Sw ...
 
随机推荐
- Python学习笔记12:标准库之对象序列化(pickle包,cPickle包)
			
计算机的内存中存储的是二进制的序列. 我们能够直接将某个对象所相应位置的数据抓取下来,转换成文本流 (这个过程叫做serialize),然后将文本流存入到文件里. 因为Python在创建对象时,要參考 ...
 - 高仿淘宝送货地址暴走漫画系列(附demo)
			
演讲: 我是个程序员,一天我坐在路边一边喝水一边苦苦检查bug. 这时一个乞丐在我边上坐下了,開始要饭,我认为可怜.就给了他1块钱. 然后接着调试程序.他可能生意不好,就无聊的看看我在干什么.然后过了 ...
 - 1002. 写这个号码 (20)(数学啊 ZJU_PAT)
			
主题链接:http://pat.zju.edu.cn/contests/pat-b-practise/1002 读入一个自然数n,计算其各位数字之和.用汉语拼音写出和的每一位数字. 输入格式:每一个測 ...
 - HihoCoder——Trie树
			
本文出自:http://blog.csdn.net/svitter 原题:http://hihocoder.com/contest/hiho2/problem/1 题解:使用Trie树..基础题目.一 ...
 - 自己写CPU第九阶段(3)——加载存储指令说明2(swl、swr)
			
我们会继续上传新书<q=%E8%87%AA%E5%B7%B1%E5%8A%A8%E6%89%8B%E5%86%99CPU&ie=utf-8&src=se_lighten_quot ...
 - WWDC 2014 Session 205/217 Extension 注意事项
			
基于阅读下面的内容205和217的PDF做笔记.没有深入研究. 205 Creating Extensions for iOS and OS X, Part 1 217 Creating Extens ...
 - iostream与iostream.h乱弹琴
			
#include <iostream.h> 非标准输出流 #include <iostream> 标准输出流 见短eclipse关于使用android ndk时的简单代码 ...
 - bootstrap使用汇总
			
//大多数功能都能够指定data属性来指定 但是,有必要的情况下使用jquery由于事件是不同的过程 //活动通常有两种状态show shown 通用和过去的 <!DOCTYPE html> ...
 - use grep & awk to get ed2k links in the webpage
			
in cygwin grep "href=\"ed2k" c.htm |awk -F '\"' '{print $2}' >ed2k.txt
 - java 产生的固体物的基础上 增删改的SQL声明
			
经过多次修改.最后版本. package com.power.sql; import java.lang.reflect.Field; import java.lang.reflect.Modifie ...