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​)​, ​\(​manufacturer​)​, ​\(​product​)​, ​\(​check​)​."​)
​case​ ​let​ .​QRCode​(​productCode​):
​ ​println​(​"QR code: ​\(​productCode​)​."​)
​}
​// prints "QR code: ABCDEFGHIJKLMNOP."

本章思维导图

这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值