//遞歸枚舉值實例 enum Expression{ //單個數值 case num(param:Int) //表示加法運算 將Expression作為相關值參數類型 indirect case add(param:Expression,param2:Expression) //表示減法運算 將Ex ...
//遞歸枚舉值實例 enum Expression{ //單個數值 case num(param:Int) //表示加法運算 將Expression作為相關值參數類型 indirect case add(param:Expression,param2:Expression) //表示減法運算 將Expression作為相關值參數類型 indirect case sub(param:Expression,param2:Expression) //表示乘法運算 將Expression作為相關值參數類型 indirect case mul(param:Expression,param2:Expression) //表示除法運算 將Expression作為相關值參數類型 indirect case div(param:Expression,param2:Expression) } //使用遞歸枚舉實現((4+4)*2-8)/2的複合表達式 //創建單值4 var num = Expression.num(param: 4) //進行4+4運算 var num4Add4 = Expression.add(param: num, param2: num) var num2 = Expression.num(param: 2) //進行(4+4)*2 var numMul2 = Expression.mul(param: num4Add4, param2: num2) var num3 = Expression.num(param: 8) //進行(4+4)*2-8 var numSub8 = Expression.sub(param: numMul2, param2: num3) var num4 = Expression.num(param: 2) //進行((4+4)*2-8)/2 var numDiv = Expression.div(param: numSub8, param2: num4) //定義功能方法 func expressionFunc(param:Expression)->Int{ switch param { case let .num(param: val): return val case let .add(param: val1, param2: val2): return expressionFunc(param: val1)+expressionFunc(param: val2) case let .mul(param: val1, param2: val2): return expressionFunc(param: val1)*expressionFunc(param: val2) case let .sub(param: val1, param2: val2): return expressionFunc(param: val1)-expressionFunc(param: val2) case let .div(param: val1, param2: val2): return expressionFunc(param: val1)/expressionFunc(param: val2) } } //方法調用 print(expressionFunc(param: numDiv))