- 枚舉
- 寫法(以
enum
關鍵字開頭,后跟名稱,{}
內是枚舉內容,每一個枚舉值使用關鍵字case
標志)
enum Week { case Monday case Tuesday case Wednesday case Thursday case Friday case Saturday case Sunday } enum anotherWeek { case Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday }
- Swift中,枚舉會定義一個全新的類型
//簡單寫法 enum Week { case Monday case Tuesday case Wednesday case Thursday case Friday case Saturday case Sunday } //合并寫法 enum anotherWeek { case Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday } //定義枚舉變量 var first = Week.Monday var second = anotherWeek.Saturday //枚舉值匹配,匹配時,我們必須明確枚舉內的每個值都不會遺漏 switch first { case .Monday,.Tuesday,.Wednesday,.Thursday,.Friday: print("工作日") case .Saturday,.Sunday: print("休息") } //當不需要詳盡匹配時,我們也可以使用"default"來標識不需要明確處理的成員 switch second { case .Monday,.Tuesday,.Wednesday,.Thursday,.Friday: print("工作日") default: print("休息") }
- 值關聯(lián)(我們可以在枚舉中提供相關類型的關聯(lián)值,在使用switch進行匹配時,我們可以用
let
或者var
來提取每個變量,當整個分支語句的所有變量都需要提取時,我們可以把let
或者var
寫在成員變量前)
enum Request { case result(Int,String) } var success = Request.result(200, "Success") switch success { case .result(let code,let message): print("the resultCode is \(code) request \(message)") } switch success { case let .result(code,message): print("the resultCode is \(code) request \(message)") }
- 原始值:
在Swift中,定義枚舉時,如果我們給枚舉設置類型,那么枚舉的每個成員都會相應的附上一個對應類型的原始值,此時我們可以根據這個原始值來生成枚舉中的一個變量.
以下面代碼為例,Week(rawValue:str)
會返回一個Week?
的類型,所以我們對他進行枚舉時,必須確保其不為nil
enum Week:String { case Monday case Tuesday case Wednesday case Thursday case Friday case Saturday case Sunday } var str = "Monday" if var strOfWeek = Week(rawValue: str) { switch strOfWeek { case .Monday,.Tuesday,.Wednesday,.Thursday,.Friday: print("工作日") default: print("休息") } }
- 遞歸枚舉(在成員變量前,加
indirect
關鍵字,表明該成員可以被遞歸)
enum ArithmeticExpression { case number(Int) indirect case addition(ArithmeticExpression, ArithmeticExpression) indirect case multiplication(ArithmeticExpression, ArithmeticExpression) } let value1 = ArithmeticExpression.number(4) let value2 = ArithmeticExpression.number(5) let sum = ArithmeticExpression.addition(value1, value2) let product = ArithmeticExpression.multiplication(sum, ArithmeticExpression.number(2)) func evalute(_ expression:ArithmeticExpression) ->Int { switch expression { case let .number(a): return a case let .addition(value1, value2): return evalute(value1) + evalute(value2) case let .multiplication(value1,value2): return evalute(value1) * evalute(value2) } } evalute(product)
- 寫法(以
Swift---8.枚舉
最后編輯于 :
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門欲低,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畜晰,你說我怎么就攤上這事砾莱。” “怎么了凄鼻?”我有些...
- 正文 為了忘掉前任匈子,我火速辦了婚禮河胎,結果婚禮上,老公的妹妹穿的比我還像新娘虎敦。我一直安慰自己游岳,他們只是感情好,可當我...
- 文/花漫 我一把揭開白布其徙。 她就那樣靜靜地躺著胚迫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唾那。 梳的紋絲不亂的頭發(fā)上访锻,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鲤妥!你這毒婦竟也來了佳吞?” 一聲冷哼從身側響起,我...
- 正文 年R本政府宣布届囚,位于F島的核電站,受9級特大地震影響是尖,放射性物質發(fā)生泄漏意系。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一饺汹、第九天 我趴在偏房一處隱蔽的房頂上張望蛔添。 院中可真熱鬧,春花似錦兜辞、人聲如沸迎瞧。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽凶硅。三九已至,卻和暖如春扫皱,著一層夾襖步出監(jiān)牢的瞬間足绅,已是汗流浹背捷绑。 一陣腳步聲響...
推薦閱讀更多精彩內容
- 學習不像愛情蕾总。愛情你一認真就輸了。學習你一認真就贏了琅捏。A plant may produce new flower...
- 一等(first-class)類型每個枚舉定義了一個全新的類型生百。以大寫字母開頭成員值(或成員) 原始值 關聯(lián)值...
- 采茶滤奈,作為普洱茶制作的第一步摆昧,對普洱茶后期品質有著很大的影響,看似沒有難度蜒程,實際卻包含了許多門道绅你,需要按照一定的采...