Swift学习笔记系列——(7)枚举

前端之家收集整理的这篇文章主要介绍了Swift学习笔记系列——(7)枚举前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

Tags: Swift 学习笔记

发布时间:2015-07-13
修改时间:2015-07-13
作者:Erwin
博客地址:技术杂货铺
欢迎转载,转载请注明出处。

Swift学习笔记系列——(7)枚举

枚举

Swift的枚举更像是类。
和C语言中的枚举不同点:
不必给每个枚举成员都提供值;
可以给枚举成员提供原始值,但要求类型相同;
枚举成员的原始值可以是字符串、字符、整型或浮点型;
枚举成员可以定义为联合数值,可以理解为一个元组;
枚举成员可以是不同的联合数值;
枚举有类的特性,可以有计算属性、实例方法、构造函数,可以扩展功能和实现协议;

枚举语法

用case定义枚举成员;
多个枚举成员可以写在一个case后面,用逗号分隔开来;
首字母大写;
已知枚举类型,赋值时可以省去枚举名称

联合数值

使用联合数值,如同定义了枚举成员的类型;
联合数值可以理解为元组;
使用了联合数值的枚举,在比较时,其实比较的是联合数值的类型;
联合数值只有在创建了该枚举的常量或者变量后才会有值;

原始值

枚举成员的原始值类型要保持一致;
原始值在枚举定义的时候就有值了;
原始值要保持唯一性;
整数做原始值,没有给出的成员会用递增数字作原始值;

根据原始值的构造函数

定义时提供了原始值的枚举类型,可以用原始值初始化枚举成员,但是这个构造方法是可以失败的。用定义中不存在的原始值作参数,就会得到nil。

在switch语句匹配枚举

枚举类型已知,case语句中可以省去枚举类型;
switch必须涵盖全部分支,没有必要时,用default语句;
case语句中可以定义常量或者变量对应联合数值的项,供解析联合数值

switch​ ​productBarcode​ {
​case​ .​UPCA​(​let​ ​numberSystem​,​let​ ​manufacturer​,​let​ ​product​,​let​ ​check​):
​ ​println​(​"UPC-A: ​\(​numberSystem​)​,​\(​manufacturer​)​,​\(​product​)​,​\(​check​)​."​)
​case​ .​QRCode​(​let​ ​productCode​):
​ ​println​(​"QR code: ​\(​productCode​)​."​)
​}
​// prints "QR code: ABCDEFGHIJKLMNOP."

case语句中定义定义常量或者变量对应联合数值,供解析联合数值,更简洁

switch​ ​productBarcode​ {
​case​ ​let​ .​UPCA​(​numberSystem​,​manufacturer​,​product​,​check​):
​ ​println​(​"UPC-A: ​\(​numberSystem​)​,​\(​check​)​."​)
​case​ ​let​ .​QRCode​(​productCode​):
​ ​println​(​"QR code: ​\(​productCode​)​."​)
​}
​// prints "QR code: ABCDEFGHIJKLMNOP."

本章思维导图

原文链接:https://www.f2er.com/swift/326639.html

猜你在找的Swift相关文章