Swift简明教程(五)枚举与结构体
来源:互联网 发布:数据库建模工具 知乎 编辑:程序博客网 时间:2024/05/01 23:54
Swift简明教程(五)枚举与结构体
使用enum
关键字创建枚举类型。与类类似,枚举类型中一样可以定义方法。
enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { case .Ace: return "ace" case .Jack: return "jack" case .Queen: return "queen" case .King: return "king" default; return String(self.toRaw()) } }}let ace = Rank.Acelet aceRawValue = ace.toRow()
试验编写一个函数用来比较两个Rank
枚举值
在上面的代码中,枚举类型的原始值是Int
类型,定义的时候只明确了第一个,后面的依次递增。当然也可以使用浮点数或者字符串作为枚举类型的值。
使用toRaw
和fromRaw
可以在枚举类型和原始值之间进行转换。
if let convertedRank = Rank.fromRaw(3) { let threeDescription = convertedRank.simpleDescription()}
枚举类型成员的值是一个实际的值,而不仅仅是他们原始值的另外一种写法。事实上,你可以不提供有意义的原始值。
enum Suit { case Spades, hearts, Diamonds, Clubs func simpleDescription() -> String { switch self { case .Spades: return "spades" case .Hearts: return "hearts" case .Diamonds: return "diamonds" case .Clubs: return "clubs" } }}let hearts = Suit.Heartslet heartsDescription = hearts.simpleDescription()
试验给Suit
添加一个color
方法,当枚举值为Spades
或者Clubs
的时候返回”black”,否则返回”red”。
每个枚举成员都可以关联一些值。同一个枚举类型的实例成员都能够关联不同的值。在创建枚举类型的实例时可以给枚举成员关联上一些值。关联的值与原始的值不一样:同一个枚举类型的所有成员中,原始值都是一样的,在定义枚举类型的时候就已经确定了。
例如从服务器上获取日落和日出的实际。服务器会返回正确的信息或者出错。
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): let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)." case let .Error(error): let serverResponse = "Failure... \(error)"}
试验给ServerResponse
的switch
添加第三个case
分支。
0 0
- Swift简明教程(五)枚举与结构体
- Swift之旅(五)枚举与结构体
- VB.NET入门(五):数组,枚举与结构体
- 项目五。点结构体与枚举
- 职群教育 | IOS开发 Swift语言入门(五):枚举和结构体
- Swift简明教程(一)变量与常量
- Swift简明教程(三)-函数与闭包
- Swift简明教程(四)类与对象
- Swift简明教程(六)协议与扩展
- Swift教程-类与结构体
- swift 枚举和结构体
- Swift-枚举和结构体
- Swift枚举和结构体
- Swift 枚举和结构体
- Swift-枚举、结构体、类
- Swift简明教程一(数据类型)
- Swift简明教程(二)流程控制
- Swift简明教程(七)泛型
- SDL 上的界面库
- 共享内存在Java中的实现和应用
- jQuery mobile 表单提交
- Android 获取挂载存储卡的信息
- 黑马程序员_排序算法解析
- Swift简明教程(五)枚举与结构体
- 用OLE DOI 实现ABAP导出EXCEL表格
- 网络虚拟化技术
- Android学习笔记之RelativeLayout(相对布局)
- linux 面试详细资料
- OJ2-24点
- C语言中有bool类型吗?
- Unicode环境下完成CString向string类型的转换
- IOS 字符串中去除特殊符号 stringByTrimmingCharactersInSet 应该用于账号登录等