博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Swift 枚举和结构
阅读量:4541 次
发布时间:2019-06-08

本文共 2211 字,大约阅读时间需要 7 分钟。

枚举

  使用enum创建枚举——注意 Swift 的枚举可以关联方法:

1 enum Rank: Int { 2     case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten 3     case Jack, Queen, King 4         func simpleDescription () -> String { 5         switch self { 6             case .Ace: 7                 return "ace" case .Jack: 8                 return "jack" case .Queen: 9                 return "queen" case .King:10                 return "king" default:11                 return String (self.toRaw ())12         }13     }14 }15 let ace = Rank.Ace16 let aceRawValue = ace.toRaw ()

使用toRawfromRaw在原始(raw)数值和枚举值之间进行转换:

1 if let convertedRank = Rank.fromRaw (3) {2     let threeDescription = convertedRank.simpleDescription ()3 }

注意枚举中的成员值(member value)是实际的值(actual value),和原始值(raw value)没有必然关联。

  一些情况下枚举不存在有意义的原始值,这时可以直接忽略原始值:

1 enum Suit { 2     case Spades, Hearts, Diamonds, Clubs 3         func simpleDescription () -> String { 4         switch self { 5             case .Spades: 6                 return "spades" case .Hearts: 7                 return "hearts" case .Diamonds: 8                 return "diamonds" case .Clubs: 9                 return "clubs"10         }11     }12 }13 let hearts = Suit.Hearts14 let heartsDescription = hearts.simpleDescription ()

除了可以关联方法,枚举还支持在其成员上关联值,同一枚举的不同成员可以有不同的关联的值:

1 enum ServerResponse { 2     case Result (String, String) 3     case Error (String) 4 } 5  6 let success = ServerResponse.Result ("6:00 am", "8:09 pm") 7 let failure = ServerResponse.Error ("Out of cheese.") 8  9 switch success {10     case let .Result (sunrise, sunset):11         let serverResponse = "Sunrise is at \(sunrise) and sunset is at \(sunset)." case let .Error (error):12         let serverResponse = "Failure... \(error)"13 }

 

结构

  Swift 使用struct关键字创建结构。结构支持构造器和方法这些类的特性。结构和类的最大区别在于:结构的实例按值传递(passed by value),而类的实例按引用传递(passed by reference)。

1 struct Card {2     var rank: Rank3     var suit: Suit4     func simpleDescription () -> String {5         return "The \(rank.simpleDescription ()) of \(suit.simpleDescription ())"6     }7 }8 let threeOfSpades = Card (rank: .Three, suit: .Spades)9 let threeOfSpadesDescription = threeOfSpades.simpleDescription ()

 

 

转载于:https://www.cnblogs.com/atong/p/3767489.html

你可能感兴趣的文章
uiautomator特殊场景
查看>>
Monkey 启动原理分析
查看>>
go ---时间戳和Time类型的相互转化
查看>>
Tries前缀树
查看>>
TOJ4439微积分――曲线积分(数学,模拟)
查看>>
【学习中】Unity Schedule
查看>>
POJ 3169 Layout(差分约束 线性差分约束)
查看>>
模板 素数判定,求合数因子
查看>>
VS 编辑器扩展辅助工具
查看>>
Leetcode Longest Substring Without Repeating Characters (java)
查看>>
Maven 聚合与继承
查看>>
MySQL的半同步复制监控
查看>>
还是畅通工程(两种解法:prim & Kruskal)
查看>>
css初始化样例代码
查看>>
内边距、边框和外边距的关系
查看>>
模板语言--变量
查看>>
div下面多个a标签的点击事件,并且获取a的属性
查看>>
php 计算 距离
查看>>
.hivehistory
查看>>
面试总结
查看>>