美文网首页iOS Developer
Swift递归枚举的简单运用

Swift递归枚举的简单运用

作者: BBH_Life | 来源:发表于2017-04-26 15:26 被阅读78次

Swift枚举中有一种特殊用法叫做递归枚举,在枚举中可以调用自己,这样可以很方便的来表达一些链式的表达式。例如表达数字计算式等等。下列是一个简单例子,使用递归枚举和递归函数来实现简单的表达式计算函数。

import Foundation

/*使用递归枚举表达加减乘除*/
/*并使用函数计算结果*/
indirect enum math {
    case num(Int)
    case plus(math,math)
    case sub(math,math)
    case multi(math,math)
    case divide(math,math)
}

/*
 表达(3+5)*20/5
 */

let three = math.num(3)
let five = math.num(5)
let threePlusFive = math.plus(three, five)
let multiTwenty = math.multi(threePlusFive, math.num(20))
let divideFive = math.divide(multiTwenty, math.num(5))

func calculate(expresion : math) -> Int {
    switch expresion {
    case let .num(value):
        return value
    case let .multi(first, seconde):
        return calculate(expresion: first) * calculate(expresion: seconde)
    case let .plus(first, seconde):
        return calculate(expresion: first) + calculate(expresion: seconde)
    case let .divide(first, seconde):
        return calculate(expresion: first) / calculate(expresion: seconde)
    default:
        return -1
    }
}

print(calculate(expresion: divideFive))

相关文章

  • Swift递归枚举的简单运用

    Swift枚举中有一种特殊用法叫做递归枚举,在枚举中可以调用自己,这样可以很方便的来表达一些链式的表达式。例如表达...

  • Swift 5.1 (8) - 枚举类型

    级别: ★☆☆☆☆标签:「iOS」「Swift 5.1」「枚举」「迭代枚举」「枚举关联值」「递归枚举」作者: 沐灵...

  • Swift - 递归枚举

    个人理解 递归枚举是拥有另一个枚举作为枚举成员关联值的枚举,实际上就是Swift中枚举关联值的特性和递归算法在Sw...

  • 枚举(Enum)

    目录 枚举语法 关联值 原始值 递归枚举 ** 在 Swift 中不必给每一个枚举成员提供一个值,如果给枚举成员提...

  • 从零学习Swift 02:枚举和可选项

    一:枚举 枚举的定义Swift中的枚举定义枚举类型很简单: 同 OC不同的是,Swift中的枚举不单单可以是Int...

  • Swift枚举

    枚举简单认识 Swift中的枚举比OC中的枚举强大, 因为Swift中的枚举是一等类型, 它可以像类和结构体一样增...

  • Swift学习笔记(四)--枚举,类与结构体

    枚举(Enumerations) 枚举在Swift里面得到了很大的拓展, 使其变得更加简单, 易用且强大. 枚举语...

  • Swift 基础笔记 - 枚举

    枚举 OC定义和使用枚举 Swift定义枚举类型 Swift判断枚举类型 枚举成员类型

  • Swift&OC位移枚举区别

    1、Swift 位移枚举写法 2、ObjC位移枚举写法 相比之下ObjC更加简单明了。

  • 可暴力枚举就是可计算

    递归可枚举就是计算可枚举

网友评论

    本文标题:Swift递归枚举的简单运用

    本文链接:https://www.haomeiwen.com/subject/wbwizttx.html