Swift---8.枚舉

  • 枚舉
    • 寫法(以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)
    
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末费坊,一起剝皮案震驚了整個濱河市竟趾,隨后出現的幾起案子朴爬,更是在濱河造成了極大的恐慌赵讯,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,627評論 6 517
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胚膊,死亡現場離奇詭異缭受,居然都是意外死亡,警方通過查閱死者的電腦和手機鹿驼,發(fā)現死者居然都...
    沈念sama閱讀 95,180評論 3 399
  • 文/潘曉璐 我一進店門欲低,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人畜晰,你說我怎么就攤上這事砾莱。” “怎么了凄鼻?”我有些...
    開封第一講書人閱讀 169,346評論 0 362
  • 文/不壞的土叔 我叫張陵腊瑟,是天一觀的道長。 經常有香客問我块蚌,道長闰非,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 60,097評論 1 300
  • 正文 為了忘掉前任匈子,我火速辦了婚禮河胎,結果婚禮上,老公的妹妹穿的比我還像新娘虎敦。我一直安慰自己游岳,他們只是感情好,可當我...
    茶點故事閱讀 69,100評論 6 398
  • 文/花漫 我一把揭開白布其徙。 她就那樣靜靜地躺著胚迫,像睡著了一般。 火紅的嫁衣襯著肌膚如雪唾那。 梳的紋絲不亂的頭發(fā)上访锻,一...
    開封第一講書人閱讀 52,696評論 1 312
  • 那天,我揣著相機與錄音,去河邊找鬼期犬。 笑死河哑,一個胖子當著我的面吹牛,可吹牛的內容都是我干的龟虎。 我是一名探鬼主播璃谨,決...
    沈念sama閱讀 41,165評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鲤妥!你這毒婦竟也來了佳吞?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 40,108評論 0 277
  • 序言:老撾萬榮一對情侶失蹤棉安,失蹤者是張志新(化名)和其女友劉穎底扳,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體贡耽,經...
    沈念sama閱讀 46,646評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡衷模,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,709評論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了菇爪。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片算芯。...
    茶點故事閱讀 40,861評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖凳宙,靈堂內的尸體忽然破棺而出熙揍,到底是詐尸還是另有隱情,我是刑警寧澤氏涩,帶...
    沈念sama閱讀 36,527評論 5 351
  • 正文 年R本政府宣布届囚,位于F島的核電站,受9級特大地震影響是尖,放射性物質發(fā)生泄漏意系。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,196評論 3 336
  • 文/蒙蒙 一饺汹、第九天 我趴在偏房一處隱蔽的房頂上張望蛔添。 院中可真熱鬧,春花似錦兜辞、人聲如沸迎瞧。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,698評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽凶硅。三九已至,卻和暖如春扫皱,著一層夾襖步出監(jiān)牢的瞬間足绅,已是汗流浹背捷绑。 一陣腳步聲響...
    開封第一講書人閱讀 33,804評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留氢妈,地道東北人粹污。 一個月前我還...
    沈念sama閱讀 49,287評論 3 379
  • 正文 我出身青樓,卻偏偏與公主長得像允懂,于是被迫代替她去往敵國和親厕怜。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,860評論 2 361

推薦閱讀更多精彩內容