0
Swift 2.0有一個稱爲間接遞歸枚舉的新特性。有人可以解釋它是什麼嗎?什麼是遞歸枚舉和語法在swift中不正確
Swift 2.0有一個稱爲間接遞歸枚舉的新特性。有人可以解釋它是什麼嗎?什麼是遞歸枚舉和語法在swift中不正確
遞歸枚舉是具有枚舉作爲一個或一個以上的枚舉案件相關聯的值的另一個實例的枚舉。
給出亮點的簡化使用情況下的例子:
indirect enum ArithmeticExpression {
case Number(Int)
case Addition(ArithmeticExpression, ArithmeticExpression)
case Multiplication(ArithmeticExpression, ArithmeticExpression)
}
func evaluate(expression: ArithmeticExpression) -> Int {
switch expression {
case .Number(let value):
return value
case .Addition(let left, let right):
return evaluate(left) + evaluate(right)
case .Multiplication(let left, let right):
return evaluate(left) * evaluate(right)
}
}
// evaluate (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))
// prints "18"