swift语言学习-10.枚举
来源:互联网 发布:什么样的域名有价值 编辑:程序博客网 时间:2024/04/28 21:33
swift 10 枚举
swift更好排版:https://zybuluo.com/phper/note/82839
枚举语法
枚举,Enumerations,和在c语言中的数据类型很像,它也是定义了一个通用类型的一组相关的值。
像这样子定一个一个枚举:
enum SomeEnumeration { case ** //enumeration definition goes here}
关键字enum
打头 ,接枚举name,再用{}
花括号包围住。里面的成员用case
申明,有点像switch
。
以下是定义了一个指南针四个方向的枚举:
enum compasspoint { case North case South case East case West}
多个成员,可以出现在一行上,可以只用一个case
,然后用,
隔开就可以了:
enum compasspoint { case North,South,East,West}
每个枚举定义了一个全新的类型。像 Swift 中其他类型一样,它们的名字(例如CompassPoint)必须以一个大写字母开头。给枚举类型起一个单数名字而不是复数名字,以便于读起来更加容易理解。
我们可以像这样子来读取一个枚举里的某一个值:
var directionToHead = CompassPoint.West
directionToHead的类型被推断当它被CompassPoint的一个可能值初始化。一旦directionToHead被声明为一个CompassPoint,你可以使用更短的点.
语法将其设置为另一个CompassPoint的值:
directionToHead = .East
directionToHead的类型已知时,当设定它的值时,你可以不再写类型名。使用显式类型的枚举值可以让代码具有更好的可读性。
PS: 妈的,说实话,上面这几段真没看懂,完全不知道在讲些啥!
匹配枚举值和Switch语句
我们可以匹配单个枚举值和switch
enum compasspoint {
case North,South,East,West
}
var directionToHead = compsspoint.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")
default:
println("Not a safe place for humans")
}
// 输出 "Watch out for penguins”
你可以如此理解这段代码:
“考虑directionToHead的值。当它等于.North,打印“Lots of planets have a north”。当它等于.South,打印“Watch out for penguins”。”
原始值
上面讲的还只是基本的一个定义枚举,枚举也是可以定义默认值的,也就是原始值。
enum ASCIIControlCharacter: Character {
case Tab = "\t"
case LineFeed = "\n"
case CarriageReturn = "\r"
}
上面的枚举ASCIIControlCharacter
被申明成Character
字符类型,然后,它有3个值,每个值都有一个原始值。
原始值可以是字符串
,字符
,或者任何整型值
或浮点型值
。每个原始值在它的枚举声明中必须是唯一的。当整型值被用于原始值,如果其他枚举成员没有值时,它们会自动递增。
比如这个例子:
enum Planet: Int {
case Mercury = 1, Venus, Earth, Mars, Jupiter, Saturn, Uranus, Neptune
}
我们就给Mercury设置里原始值为1,其他的没有设置,刚才说过,如果是整型用与原始值,其他没设置,是会自增的。所以,Planet.Venus = 2, Planet.Earth = 3 .....
rawValue
方法可以或者一个枚举成员的原始值
let earthsOrder = Planet.Earth.rawValue// earthsOrder is 3
也通过参数为rawValue构造函数创建特定原始值的枚举。
let possiblePlanet = Planet(rawValue: 7)// possiblePlanet is of type Planet? and equals Planet.Uranus
在上面的例子中,possiblePlanet是哥“可选的Planet” 等于Planet.Uranus。
我们用上面的switch
来匹配下是不是等于Uranus
let positionToFind = 9
if let somePlanet = Planet(rawValue: 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)")
}
// 输出 "There isn't a planet at position 9
这个范例使用可选绑定(optional binding),通过原始值9试图访问一个行星。if let somePlanet = Planet(rawValue: 9)语句获得一个可选Planet,如果可选Planet可以被获得,把somePlanet设置成该可选Planet的内容。在这个范例中,无法检索到位置为9的行星,所以else分支被执行。
- swift语言学习-10.枚举
- Swift语言学习4--枚举和结构体
- Swift编程语言学习7—— 枚举
- Swift编程语言学习10—— 枚举属性监视器
- Swift学习 --- 2.8枚举
- swift学习:9.枚举
- Swift学习之枚举
- Swift学习:2.8 枚举
- Swift 的学习(枚举)
- Swift学习笔记之枚举
- Swift学习笔记之枚举
- swift学习记录(枚举)
- Swift学习枚举和数据结构
- Swift学习笔记(10)--枚举
- swift学习笔记之枚举
- swift学习笔记(20)-枚举
- Swift 系统学习 15 枚举
- swift学习笔记7 枚举
- ADF中多选框实现
- Ubuntu 12.04 LTS中文txt文件显示乱码问题
- [Objective-C]关联(objc_setAssociatedObject、objc_getAssociatedObject、objc_removeAssociatedObjects)
- 排序算法
- Linux安装Mysql+Apach+PHP+php
- swift语言学习-10.枚举
- platform 驱动详解
- AsyncTask源码分析
- srm 310 div2 1000(BIT基础, 二分)
- 自定义组合view (二)
- linux shell 中"2>&1"含义
- OCR字符识别(二) 数学公式中箭头与字母的拆分
- You need to use a Theme.AppCompat theme (or descendant) with this activity解决方法
- ...誉天Cisco/Linux/Oracle认证+IT系统运维