麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 學院 > 開發設計 > 正文

Swift中文教程(六)--枚舉和結構

2019-11-14 20:25:47
字體:
來源:轉載
供稿:網友

 

Enumerations 枚舉

 

使用 enum 來創建一個枚舉。跟Classes(類)和其他類型的命名方式一樣,枚舉也可以有Method(方法)。

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

練習:

創建一個函數,通過原始值的類比來比較兩個rank的值。

在上例中,原始值的類型是 Int ,所以你可以只指定第一個原始值就可以了,因為后面的原始值都是按照順序賦值的。你還也可以使用字符串或浮點數作為枚舉的原始值。

使用toRaw和fromRaw函數可以實現原始值和枚舉值間的轉換:

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

枚舉出來的值就是實際值,而不是其他方式寫的原始值。(這句話的意思應該就是說枚舉值和原始值沒有必然的關聯性)為了防止枚舉無意義的原始值,你不需要特意提供一個原始值:

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

練習:

給枚舉Suit創建一個名為color的方法,讓Spades和Clubs返回“black”,讓Hearts和Diamonds返回“red”。

請注意上例中引用hearts成員的兩種方式:當給常量hearts賦值時,Suit.Hearts是全名引用,因為此時的常量hearts沒有一個明確的類型。而在switch內部,枚舉通過縮略形式:.Hearts來引用,因為 self 的值對于枚舉成員是已知的。當值的類型已知時,你可以隨時使用縮略形式(去引用)。

 

Structures 結構

 

使用struct關鍵字創建來創建結構。結構體支持類(Classes)的許多行為:如,方法(methods)和構造器(initializers)。結構體與類最重要的區別是,在代碼中,結構體通過拷貝(copy)來實現值的傳遞,而類則是通過引用(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()

練習:

添加一個Card方法來創建一副紙牌,每一張牌都含有一個Rank和Suit的組合。

一個枚舉成員的實例可以擁有實例的值。相同枚舉成員的實例可以有不同的值。你在創建實例時可以給它指定一個值。指定值和原始值的區別在于:枚舉的原始值與所有實例相同,原始值是你在定義枚舉時提供的。

例如:有一個場景,需要你從服務器中請求太陽升起和降落的時間,服務器可以響應給你相應的信息,也能給你返回錯誤的信息:

 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)."12 case let .Error(error)://請求錯誤時返回的信息--Joe.Huang13     let serverResponse = "Failure...  /(error)"14 }

練習:

在switch語句里給ServerResponse添加第三種情況(case)。

請注意:(上例中)ServerResponse所返回的日出與日落時間是switch中所匹配的情況(case)。

 

謝謝,Swifter-QQ群:362232993,同好者進~ 

github地址:https://github.com/Joejo/Swift-lesson-for-chinese

 

 

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 成人国产精品一区二区毛片在线 | 91精品国产91久久久久久 | 俄罗斯16一20sex牲色另类 | 黄网站免费观看视频 | 午夜视频久久 | 欧美福利视频一区二区三区 | 二区三区在线观看 | 视频一区免费观看 | 久久免费观看一级毛片 | 国产一级二级在线播放 | 福利在线国产 | 8x成人在线电影 | 羞羞视频免费观看网站 | 精品一区二区三区中文字幕 | 日韩精品久久久久久 | 欧美成人se01短视频在线看 | 最近免费观看高清韩国日本大全 | 91精品免费在线 | 成人免费久久网 | www.狠狠插.com| 4p嗯啊巨肉寝室调教男男视频 | 久久免费视频一区二区三区 | 91麻豆精品国产91久久久点播时间 | 毛片中文字幕 | 高清在线观看av | 特级毛片免费视频 | 成年人视频免费 | 午夜激情视频免费 | 九九热在线视频观看这里只有精品 | 中文字幕在线观看网址 | 国产亚洲精品综合一区91555 | 日本在线视频免费 | 婷婷中文字幕一区二区三区 | 久久精品日韩一区 | 久久6国产 | 欧美a在线观看 | 免费在线观看一级片 | 国产精品av久久久久久久久久 | 欧美日韩在线视频一区 | 香蕉视频破解 | 一级黄色国产视频 |