Swift中的枚举enum
来源:互联网 发布:武汉seo编辑招聘 编辑:程序博客网 时间:2024/05/22 17:44
C中的枚举
在C语言中,甚至OC等其他高级语言中,都是把enum枚举的值当作是一个int整数来替代
具体可看我的这篇文章:C语言的枚举与宏定义
Swift中的枚举enum
注:本篇文章学习自泊学(boxueio.com)
(PS:Swift更新得真是非常快啊,4个月不到前写的代码,今天打开就提醒有语法要修正…)
1. what:
在Swift中,enum看起来是这样的:
enum Week{ case MON case TUES case WED case THUR case FRI case SAT case SUN}let week1 = Week.MON或:
enum Subject{ case Chinese,English,Chemistry,History}let mySubject = Subject.Chinese
无论哪种方式,可以在playground看到,当在使用Week.MON时,就已经在访问一个enum的值了,它的case就是它的值本身,无需刻意地定义一个值来代表它。
2. why:
使用enum比使用字符串或数字有很多好处:
1 避免输入错误
2 使用enum类型是安全的,如当使用Week或Subject时,不会发生类型正确,值却没有意义的情况
3. how:
1)enum与switch
如果enum的类型可被推导出,则可在读取值的时候,省掉它类型的名字:
func week(today: Week){ switch today{ // 因为today可以通过类型推导推出它的类型是Week,所以不用today.MON,而是直接写.MON case .MON, .TUES, .WED: return case .THUR, .FRI, .SAT, .SUN: return }}对于一个enum的switch来说,它的所有的case就是它全部的情况,所以最后不用再写default
2)enum值的表达方式1:raw value原始数值
1. 手动为enum指定值
enum Week:Int{ case MON = 2 case TUES = 4 case WED = 7 case THUR case FRIFRI case SAT case SUN}2. 自动:
如上段代码,当没有手动为后面的THUR、FRI等赋值时,它们将被自动赋值,从上一个值开始递增
3. 访问enum的rawValue:
let week1 = Week.FRI.rawValue此时为94. 用rawValue来访问一个enum的值
let week2 = Week(rawValue: 7)此时enum值为WED
3)enum值的表达方式2: associated value结合值
1. 给每一个case绑定不同类型的值
enum HTTPAction{ case GET // 不关联任何值 case POST(String)// 关联一个字符串 case PUT(Int, String)// 关联一个tuple}let get = HTTPAction.GETlet post = HTTPAction.POST("hello")let put = HTTPAction.PUT(1, "world")
2. 通过switch访问enum的结合值associated value
func actionDesc(action: HTTPAction){ switch action { case .GET: print("get") case let .POST(msg):// let msg = action print("post: \(msg)") case .PUT(let num, let name): print("put: \(num): \(name)") }}actionDesc(action: get)actionDesc(action: post)actionDesc(action: put)
阅读全文
0 0
- Swift中的枚举enum
- Swift 中的枚举 (enum)
- 枚举enum(Swift)
- Swift中枚举enum讲解
- java 中的enum(枚举)
- c#中的枚举(enum)
- Java中的枚举Enum
- Java 中的枚举 (enum)
- Java 中的枚举 (enum)
- Java 中的枚举 (enum)
- java中的枚举(enum)
- Swift的enum枚举类型介绍
- Java中的枚举类型Enum
- [enum]C语言中的枚举
- 关于java中的枚举enum
- Java中的enum枚举类
- Java中的枚举Enum使用
- mysql 中的enum枚举类型
- 2017年8月8日
- 带头结点的单链表总结
- Bootstrap个人笔记
- java可变参数函数
- css 浮动 相对定位 绝对定位区别
- Swift中的枚举enum
- Android ListView setEmptyView
- 实现String类
- RocketMQ源码深度解析五之Consumer篇
- dp动态规划入门基础技能点必备知识
- 【java数据结构】单链表实现
- 接口测试和app测试的总结
- POJ
- springMVC ueditor傻瓜配置系列之不成功你砍我!