iOS swift学习之入门详解(枚举和结构)
来源:互联网 发布:wpf编程书籍 编辑:程序博客网 时间:2024/05/16 15:51
enum Rank:Int{ case Ace = 1 case Two,Three,Four,Five,Six,Seven,Eight,Nine,Ten case Jack,Queen,King func name()->String{ switch self { case .Ace: return "Ace" case .Jack: return "Jack" case .Queen: return "Queen" case .King: return "King" default: return String(self.rawValue) } }}let aaaa = Rank.Acelet bbbb = Rank(rawValue: 1)let cccc = aaaa.rawValueprint(aaaa.name())此枚举的原始数据类型为Int,只需要指定枚举中首项(case)的值,后面的case的值会以依次增加的方式自动推算出来。你也可以将浮点或字符串作为枚举的原始数据类型。用rawValue属性来取得某个枚举case的原始值。使用初始化方法 init?(rawValue:)(带个“?”表示返回的结果可能是nil) 可以从一个原始值创建一个枚举实例。比如上面的bbbb。算式aaaa==bbbb的结果会是true(Swift中的Bool型的值是true和false,而不是YES和NO)。一个枚举各case的值都是真实的值,并不是用于表示原始值的另外一种写法,如果某个case没有有意义的原始值,就不要提供它。下面这个枚举定义了扑克的花色:enum Suit{ case Spades,Hearts,Diamonds,Clubs func name()->String{ switch self{ case Suit.Spades: return "Spades" case .Hearts: return "Heart" case .Diamonds: return "Diamonds" case .Clubs: return "Clubs" } }}let hearts = Suit.Hearts我们可以看到switch语句里,枚举项的访问可以省掉前面的类型名,这个得看情况,只有能推断出来的时候才可以省略,省略时只要一个点就可以了。枚举的一个case实例可以带上附加的数据。同一个case的不同实例可以带着不同的附加数据。附加数据与原始数据不一样,同一个case的不同实例,它们的原始数据都一样,并且原始数据是在定义枚举时就定死了。例如,从服务器获取日出和日落时间。服务器可以返回时间或返回错误信息,定义一个枚举:enum ServerResponse{ case Result(String,String) case Error(String)}let success = ServerResponse.Result("6:00 am", "8:09 pm")let failure = ServerResponse.Error("Out of cheese.")switch success{case let .Result(sunrise,sunset): print("Sunrise is at \(sunrise) and sunset is at \(sunset).")case let .Error(error): print("Failuer ... \(error)")}上面的使用方式看起来好奇怪。这个switch的执行结果是“Sunrise is at 6:00 am and sunset is at 8:09 pm”。当switch 后面是常量failure时,输出就是“Failuer … Out of cheese.” 。case let .Result(sunrise,sunset)相当于case let ServerResponse.Result(sunrise,sunset),把ServerResponse省掉了,此处是构建一个Result case,let 使得参数sunrise和sunset从success这个case实例里获取附加数据。- 结构结构跟类一样,有属性有方法有构造方法。主要的区别是在赋值时结构是复制,而类是传引用,其余就是一点语法上无关紧要的小差别。比如:struct Card { var rank = Rank.Queen let suit:Suit}var card = Card(rank:Rank.Ace,suit:Suit.Hearts)
0 0
- iOS swift学习之入门详解(枚举和结构)
- iOS swift学习之入门详解(对象和类)
- iOS swift学习之入门详解(getter和setter)
- iOS swift学习之入门详解(协议和扩展)
- iOS学习笔记44-Swift(四)枚举和结构体
- iOS学习笔记44-Swift(四)枚举和结构体
- iOS swift学习之入门详解(函数)
- Swift快速入门之枚举与结构
- Swift 学习之枚举和结构体—003
- Swift学习小结之枚举和结构体
- Swift学习之路 -- 枚举和结构体
- swift入门 枚举和结构体
- Swift学习笔记 -- 枚举和结构
- 职群教育 | IOS开发 Swift语言入门(五):枚举和结构体
- iOS swift学习之入门详解(swfit的介绍)
- iOS swift学习之入门详解(分支循环)
- iOS swift学习之入门详解(可选类型错误处理)
- iOS巅峰之Swift结构体和类, 枚举, 构造器, 继承, 协议, 扩展(完结篇)
- Java网络编程---InetAddress类
- github desktop 使用方法
- 详解.net 中C# 编程中 堆(托管堆CLR) 和 栈
- 路径和文字
- U-Boot移植——Nand Flash
- iOS swift学习之入门详解(枚举和结构)
- Wsdl文件读取方式
- 第10,11周 阅读程序写出运行结果 (2)
- Swift之过滤器(filter)
- 不良资产证券化是什么意思
- 树操作(上)
- PHP自定义多进制
- JEECG开源团队,欢迎技术爱好者加入
- iOS swift学习之入门详解(协议和扩展)