加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-14 02:01:41 所属栏目:百科 来源:网络整理
导读:Tags: Swift 学习笔记 发布时间:2015-07-13 修改时间:2015-07-13 作者:Erwin 博客地址:技术杂货铺 欢迎转载,转载请注明出处。 Swift学习笔记系列——(7)枚举 枚举 Swift的枚举更像是类。 和C语言中的枚举不同点: 不必给每个枚举成员都提供值; 可以

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."

本章思维导图

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读