zoukankan      html  css  js  c++  java
  • Swift枚举-相关值与递归枚举

    代码:

    enum ArithmeticExpression {
        // 相关值
        case Number(Int)
        // 递归枚举
        indirect case Addition(ArithmeticExpression, ArithmeticExpression)
        indirect case Multiplication(ArithmeticExpression, ArithmeticExpression)
        indirect case Division(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)
            case .Division(let left, let right):
                return evaluate(left) / evaluate(right)
        }
    }
    
    let five = ArithmeticExpression.Number(5)
    let four = ArithmeticExpression.Number(4)
    let sum = ArithmeticExpression.Addition(five, four)
    let product = ArithmeticExpression.Multiplication(sum, ArithmeticExpression.Number(2))
    let quotient = ArithmeticExpression.Division(five, four)
    
    print(evaluate(sum))
    print(evaluate(product))
    print(evaluate(quotient))

    输出:

    9
    18
    1
  • 相关阅读:
    递归神经网络 RNN 原理(上)
    递归神经网络
    队列-Python 实现
    Tableau 我常用函数整理
    代码重构(OOP)-小栗子(PyQt5)
    Python基础
    Excel 数据显示到网页
    采坑
    Python基础
    JavaScript一些对象。
  • 原文地址:https://www.cnblogs.com/xwoder/p/4734981.html
Copyright © 2011-2022 走看看