swift學(xué)習(xí)-枚舉(Enumerations)

枚舉語法:

使用enum關(guān)鍵詞來創(chuàng)建枚舉并且把它們的整個定義放在一對大括號內(nèi),比如:

當(dāng)然也可以這樣寫

枚舉中定義的值(如north,south,east和west)是這個枚舉的成員值(或成員)。你可以使用case關(guān)鍵字來定義一個新的枚舉成員值。

注意:與Objective-C不同,Swift的枚舉成員在被創(chuàng)建時不會被賦予一個默認(rèn)的整型值,相反這些枚舉成員本身就是完備的值,這些值的類型是已經(jīng)明確定義好的CompassPoint類型

關(guān)聯(lián)值:

在Swift中枚舉可以存儲任意類型的關(guān)聯(lián)值。如下方式定義表示兩種商品條形碼的枚舉

下面我們定義一個名為Barcode的枚舉類型

判斷這個枚舉類型的值,這次我們不僅可以使用switch語句來檢查不同的條碼類型,我們還可以提取每個關(guān)聯(lián)值做為常量let或者變量var來使用

原始值:

作為關(guān)聯(lián)值的替代選擇,枚舉成員可以被默認(rèn)值(成為原始值)預(yù)填充,但是這些原始值的類型必須是相同的。

注意:原始值和關(guān)聯(lián)值是不同的。原始值是在定義枚舉時被預(yù)先填充的值,像上述三個ASCII 碼。對于一個特定的枚舉成員,它的原始值始終不變。關(guān)聯(lián)值是創(chuàng)建一個基于枚舉成員的常量或變量時才設(shè)置的值,枚舉成員的關(guān)聯(lián)值可以變化。

原始值的隱式賦值,如下所示:

如果在定義枚舉類型的時候使用了原始值,那么將會自動獲得一個初始化方法,這個方法接收一個叫做rawValue的參數(shù),參數(shù)類型即為原始值類型,返回值則是枚舉成員或nil。你可以使用這個初始化方法來創(chuàng)建一個新的枚舉實(shí)例。

遞歸枚舉:

遞歸枚舉是一種枚舉類型,它有一個或多個枚舉成員使用該枚舉類型的實(shí)例作為關(guān)聯(lián)值。使用遞歸枚舉時,編譯器會插入一個間接層。你可以在枚舉成員前加上indirect來表示該成員可遞歸。

如下所示:

或者你也可以

應(yīng)用:

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 本章將會介紹 閉包表達(dá)式尾隨閉包值捕獲閉包是引用類型逃逸閉包自動閉包枚舉語法使用Switch語句匹配枚舉值關(guān)聯(lián)值原...
    寒橋閱讀 1,629評論 0 3
  • 枚舉為一組相關(guān)的值定義了一個共同的類型,使你可以在你的代碼中以類型安全的方式來使用這些值。 如果你熟悉 C 語言,...
    雨影閱讀 436評論 0 0
  • 枚舉為一組相關(guān)的值定義了一個共同的類型,使得可以在代碼中以類型安全的方式來使用這些值。 如果熟悉 C 語言,會知道...
    窮人家的孩紙閱讀 901評論 1 4
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,578評論 19 139
  • 作為一個開發(fā)人員, 有兩個詞無論是工作中還是面試中, 都會經(jīng)常聽見, 被問及:"進(jìn)程""線程"。 在開始了解多線程...
    追夢赤子心Year閱讀 414評論 0 4

友情鏈接更多精彩內(nèi)容