Swift 遞迴列舉

2021-09-02 19:18:44 字數 1568 閱讀 2342

話不多說,先放上swift 學習得** 

今天學swift 到了遞迴列舉得**主要記錄一下學到得問題、**如下:

indirect enum arithmeticexpression
indirect 表示 列舉型別arithmeticexpression 得成員都是可遞迴得

let five = arithmeticexpression.number(5)

let four = arithmeticexpression.number(4)

let sum = arithmeticexpression.addition(five, four)

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

func evaluate(_ expression: arithmeticexpression) -> int 

}print(evaluate(product))

// 列印 "18"

這個是**上得**。

一開始我照著手敲得時候 發現了乙個讓我很困惑得問題,left、right 這兩個小老弟 到底是什麼意思?

一首歌曲過後,我做了乙個嘗試就是把列舉型別得關聯值方法改變一下:

1.case multiplication(arithmeticexpression,arithmeticexpression,arithmeticexpression,arithmeticexpression)  新增了兩個型別。

相對應得也得改下面這段**:

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

最關建得evaluate 方法裡 我做了如下嘗試:

3.  case let .multiplication(a, b,c,d):

return evaluate(a) * evaluate(b)*evaluate(c)*evaluate(d)

然後呼叫 print(evaluate(product)) 結果為 72.

我得困擾終於解決了,left 也好、right 也好 指得只是關聯值, 像我在上面定義得abcd 就是分別對應得multiplication(arithmeticexpression,arithmeticexpression,arithmeticexpression,arithmeticexpression)

就算你起 q、e、r、w 都可以。

不知道是我看教程不認真 還是如何。總算自己發現了問題。

寫了很久oc,現在學習swift 很不習慣。

剛才看了一下好像關聯值可以是 元組。再把元組得知識回顧一下。

剛學了2天、說的不對得地方 請大家指出 我會學習。

ps:剛才看了一下元組的知識、發現如果先看元組 就能明白我以上寫的困惑是怎麼回事了。

Swift基礎 列舉

列舉定義了乙個通用型別的一組相關的值,使我們可以在自己的 中以乙個安全的方式來使用這些值。列舉的結構 enum someenumeration 複製 列舉的使用 定義列舉 enum direction 呼叫列舉 var direct direction.east print 現在的方向是 direc...

Swift學習筆記 列舉

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

swift學習記錄(列舉)

列舉定義了乙個通用型別的一組相關值,使我們可以在 中以一種安全的方式來使用這些值。基本語法 使用 enum 關鍵字定義列舉 enum 列舉名 enum compasspoint 成員值乙個列舉中定義的值,是列舉的成員值 成員 case 關鍵字表示乙個新的成員值將被定義。列舉的成員值不會被預設賦予乙個...