swift學習記錄(列舉)

2021-07-09 02:27:35 字數 2441 閱讀 3696

列舉定義了乙個通用型別的一組相關值,使我們可以在**中以一種安全的方式來使用這些值。

基本語法:

使用 enum 關鍵字定義列舉

enum 列舉名

enum compasspoint

成員值乙個列舉中定義的值,是列舉的成員值(成員),case 關鍵字表示乙個新的成員值將被定義。

列舉的成員值不會被預設賦予乙個整型值。

多個成員值可以出現在同一行上,用逗號隔開:

enum planet

使用列舉成員值賦值時,可以採用 「列舉名.成員值「的形式

var value = compasspoint.north

當swift編譯器能夠根據上下文推斷出型別時,也可以使用「 . 成員值」的形式來賦值

var directiontohead= compasspoint.north

directiontohead = .west

如上,value 第一次 被賦值,第二次給value賦值時,編譯器就能推斷出是compasspoint 型別,所以可以直接用 .west 給value賦值,增強**的可讀性。

原始值

列舉成員可以被預設值(原始值)賦值,其中這些原始值具有相同的資料型別。

基本語法:

enum  列舉名:資料型別

enum weekdays:int

訪問 列舉成員原始值

可以使用 列舉成員值的 rawvalue 屬性來訪問 成員的原始值

var day = weekdays.friday.rawvalue

print(day)

//4

隱式賦值

在使用原始值為整數或者字串型別的列舉時,不需要顯式的為每乙個成員賦值,這時,swift將會自動賦值。

例如,當使用整數作為原始值時,隱式賦值的值依次遞增1。如果第乙個值沒有被賦初值,將會被自動置為0。

enum weekdays:int

var day = weekdays.friday.rawvalue

print(day)

//4

使用原始值初始化列舉變數

如果在定義列舉型別的時候使用了原始值,那麼將會自動獲得乙個初始化方法,這個方法將原始值型別作為參

數,返回列舉成員或者nil 。你可以使用這種初始化方法來建立乙個新的列舉變數。

enum weekdays:string

var day = weekdays(rawvalue: "friday") //通過原始值 friday 建立乙個列舉變數

print(day)

//optional(weekdays.friday)

因為 不是所有的傳入值都能匹配到乙個原始值,所以返回值為 可選型別。

相關值

每個成員的資料型別可以不同。類似c中的聯合型別

enum figure 

var type = figure.type("長方形")

var area = figure.area(100, 200)

print("type is \(type) and area is \(area)")

//type is type("長方形") and area is area(100, 200)

遞迴列舉

遞迴列舉是一種列舉型別,表示它的列舉中,有乙個或多個列舉成員擁有該列舉的,其他成員作為相關值。

基本語法:

enum 列舉名 或者

indirect enum 列舉名

在成員值 前加 indirect 關鍵字,表示該成員值,可以遞迴,在 列舉型別前加indirect 關鍵字,表示所有成員都可以遞迴。

enum arithmeticexpression 

func evaluate(expression: arithmeticexpression) -> int

}// 計算 (5 + 4) * 2

let five = arithmeticexpression.number(5)

let four = arithmeticexpression.number(4)

let sum = arithmeticexpression.addition(five, four)

let product = arithmeticexpression.multiplication(sum, arithmeticexpression.number(2))

print(evaluate(product))

// 輸出 "18"

Swift學習筆記 列舉

swift 中普通的列舉形式 enum direction 注意 在 swift 中,列舉的成員變數有著不同的值,他們不再是0,1,2,3 了 多個成員值也可以出現在同一行上,但是要用逗號隔開 enum direction 這一句過後,unknowdirection 就會被推斷是 direction...

Swift 的學習 列舉

在swift中,列舉型別是相當重要的乙個資料型別,他跟以往的c語言 object c中的列舉型別有很大的區別 1 在你的 中,用列舉是型別安全的 default 這個分支是沒有必要的寫的,此swich語句中,httpmethond列舉中兩個分支都已經存在 switch getenum compass...

swift學習筆記之列舉

列舉型別 成員 計算屬性,型別屬性 下標指令碼 方法 enum 的關鍵字不能省略 1 定義任意型別的列舉成員 enum anyenum north 可以賦值任意型別 2 指定型別的列舉成員 enum derication north 只能字串 3.可以初始化列舉成員的值,但是原始值必須是唯一的,不能...