- //递归枚举值实例
- 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))
复制代码
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |