Swift中的枚举enum

Swift中的枚举enum,第1张

概述C中的枚举 在C语言中,甚至OC等其他高级语言中,都是把enum枚举的值当作是一个int整数来替代 具体可看我的这篇文章:C语言的枚举与宏定义 Swift中的枚举enum 注:本篇文章学习自泊学(boxueio.com) (PS:Swift更新得真是非常快啊,4个月不到前写的代码,今天打开就提醒有语法要修正…) 1. what: 在Swift中,enum看起来是这样的: enum Week{


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
此时为9

4.用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)
总结

以上是内存溢出为你收集整理的Swift中的枚举enum全部内容,希望文章能够帮你解决Swift中的枚举enum所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1060084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存