Apple Swift语言基础入门 —— Swift概览5
来源:互联网 发布:react.js angular.js 编辑:程序博客网 时间:2024/05/16 03:54
Swift概览5
根据苹果官方《The Swift Programming Language》
2.6 枚举和结构体
使用 enum 创建枚举。像类和其他已命名类型,枚举也有与之关联的方法。本文注:下面 switch 后面的变量是 self,所以后面的 case 条件 前面有. 。表示Rank中的。
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: //表示是self.Ace 也就是Rank中的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.toRaw()在上面的例子中,枚举的原始值类型是 Int 类型,所以你只需指定第一个原始值。剩下原始值会以次序分配(逐个加1)。你也可以使用字符串或者浮点型数字作为枚举的原始类型。
使用 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()注意上面提及枚举成员 Hearts 的两种方式:当给 Hearts 常量(倒数第二行的)分配值的时候, 使用的是枚举成员 Hearts 的全名 Suit.Hearts,这是因为这个常量没有详细的类型说明。在switch中,枚举以缩写的格式 .Hearts 被引用,这是因为 self 的值已知为 Suit。你可以在值的类型已知的情况下任意使用缩写格式。
使用 struct 创建一个结构体。结构体支持许多类的特性,像方法和初始化。结构体和类的一个重要区别就是,在代码中传来传去的时候,结构体是被复制,类是通过引用传递。
struct Card { var rank: Rank var suit: Suit func simpleDescription() -> String { return "The \(rank.simpleDescription()) of \(suit.simpleDescription())" }}let threeOfSpades = Card(rank: .Three, suit: .Spades)let threeOfSpadesDescription = threeOfSpades.simpleDescription()枚举成员的实例可以有值于之关联。同一个枚举成员的那些实例可以有不同的值于之关联。在创建实例时提供关联的值。关联的值和原始值时不同的:一个枚举的成员的原始值对它的全部实例来说都是一样的,在你定义枚举的时候你需提供那个原始值。
例如,考虑从服务器上请求日出和日落时间的情况。服务器可以回应所需信息,也可以回应一些错误的信息。
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
- Apple Swift语言基础入门 —— Swift概览5
- Apple Swift语言基础入门 —— Swift概览1
- Apple Swift语言基础入门 —— Swift概览2
- Apple Swift语言基础入门 —— Swift概览3
- Apple Swift语言基础入门 —— Swift概览4
- Swift入门基础概览
- apple swift编程语言入门
- Apple Swift编程语言入门中文教程
- Swift语言概览
- Swift语言概览
- Swift语言基本概览
- 概览Swift语言
- Swift 语言概览
- Apple Swift编程语言
- apple Swift语言入门教程
- 粗解 apple swift 语言
- Apple Swift 编程语言简单入门(上)
- Apple Swift 编程语言简单入门(下)
- PCA and Whitening编程代码整理
- Camera服务之--Service
- SecureCRT设置
- QT_PC学习_多媒体入门_Avdio
- LRUCache算法实现
- Apple Swift语言基础入门 —— Swift概览5
- Dedecms在循环列表中获取会员信息
- Longest Substring Without Repeating Characters
- 数据机构-----求最大字串数据和问题
- 3G网络的建设是移动互联网和业务发展的前提
- Camera服务之--JNI部分
- js获取上传文件的绝对路径
- 第七次算法作业
- Camera服务之--App