2015-10-14 43 views

回答

2

Swift Docs

遞歸枚舉是具有枚舉作爲一個或一個以上的枚舉案件相關聯的值的另一個實例的枚舉。

給出亮點的簡化使用情況下的例子:

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" 
相關問題