iOS Swift中列舉 及用列舉實現遞迴
阿新 • • 發佈:2019-01-11
遞迴列舉是一種列舉型別,它有一個或多個列舉成員使用該列舉型別的例項作為關聯值。使用遞迴列舉時,編譯器會插入一個間接層。你可以在列舉成員前加上indirect
來表示該成員可遞迴。
enum DiGui {//定義列舉 case number(Int)//列舉新增關聯值(可以為元組) indirect case addition(DiGui,DiGui) indirect case multiplication(DiGui,DiGui) }
//遞迴 遞迴 該函式如果遇到純數字,就直接返回該數字的值。如果遇到的是加法或乘法運算,則分別計算左邊表示式和右邊表示式的值,然後相加或相乘。
func
switch expression {
case let .number(value):
return value//跳出遞迴
case let .addition(left, right):
return evaluate(left) + evaluate(right)
case let .multiplication(left, right):
return evaluate(left) * evaluate
}
}
//(5+4)*2
let five = DiGui.number(5)
let four = DiGui.number(4)
let sum = DiGui.addition(five, four)
let cheng = DiGui.multiplication(sum, DiGui.number(2))
evaluate(cheng)//18