當前位置:成語大全網 - 新華字典 - #8 swift 枚舉類型

#8 swift 枚舉類型

swift中的枚舉( Enumerations )真的是太靈活了,感覺自己已經駕馭不了這匹野馬了?。

swift中的枚舉特點:

使用 enum 關鍵詞定義枚舉類型,這個和其它語言壹致 例如

typescript中定義枚舉:

swift中: 使用 case 關鍵詞來定義壹個新的枚舉成員

使用:

可以使用switch匹配單個枚舉值

作用:

示例:壹種商品有2種編碼方式進行追蹤:

有時候我們可能需要將枚舉中所有的case情況組成壹個集合,可以讓枚舉類型擴展 CaseIterable 協議。

另外swift通過 allCases 屬性暴露了枚舉類型中所有case 的集合:

註意 Xcode 10.0+ 版本才支持這個屬性

作為關聯值的替代選擇,枚舉成員可以被默認值(也稱為 原始值 )預填充, 這些原始值的類型必須相同

原始值的理解: 即定義枚舉的時候,把枚舉的類型也定義了,比如 enum Color: String , 定義其類型為 String 類型

和關聯值的區別:

示例:使用ASCII碼作為原始值的枚舉

當原始值類型為整型或者字符串類型時,不需要顯式的給每個枚舉成員設置原始值,swift會自動的為妳賦值

使用 rawValue 屬性可以訪問枚舉成員的原始值:

字符串類型 隱式的為該枚舉成員的名稱

如果枚舉類型使用了原始值, 自動獲取壹個初始化方法 (呵呵,什麽鬼),這個方法接收壹個 rawValue 的參數,參數類型即為原始值類型,返回值則是枚舉成員或 nil

另外, 原始值構造器是壹個可失敗構造器(failable initializer)

例如,調用構造器創建壹個新的枚舉實例

特點:

要操作具有遞歸性質的數據結構,使用遞歸函數事壹種直接的方式:

感覺這個這麽復雜,估計用到的地方也比較少,了解即可

因為枚舉類型是值類型,賦值壹般都是通過拷貝的方式,所以原來的值不會改變,swift中提供了 mutating 關鍵詞用來改變值類型的值

其結構大致如下