美文网首页iOS Dev
Swift之链式调用

Swift之链式调用

作者: LimChihi | 来源:发表于2016-12-26 20:36 被阅读127次

    代码环境

    • Swift 3.0.2
    • macOS 10.12.2
    • Xcode Version 8.2 (8C38)

    原理

    链式编程的原理是调用一个属性或者方法的返回值是调用者本身。使得其可以继续调用本身中的方法或者属性。

    Demo

    新建Calculator.swift文件并建立类,然后添加加减乘除四种运算

    class Calculator {
        private result: Double = 0.0
        
        func add(_ num: Double) -> Calculator{
            result += num
            return self
        }
        
        func sub(_ num: Double) -> Calculator {
            result -= num
            return self
        }
        
        func mul(_ num: Double) -> Calculator {
            result *= num
            return self
        }
        
        func div(_ num: Double) throws -> Calculator {
            guard num != 0 else {
                throw MyError.DivZero
            }
            
            result /= num
            return self
        }
    
    }
    

    其中除法我有异常抛出,所以要新建个处理异常的枚举类型。

    enum MyError: Error {
        case DivZero
        case unKnownError
    }
    

    然后在Calculater中添加实现计算的代码

    class Calculator {
    
        static func calculator( _ do:(_ make: Calculator) -> () ) -> Double{
            let maker = Calculator()
            do(maker)
            return maker.result
        }
        
        ......
    }
    

    最后在main.swift中调用。<br />
    Demo是macOS命令行程序,iOS在相应的事件中调用即可。

    let result = Calculator.calculator { (make) in
        _ = make.add(5).mul(4).sub(3)
        
        do {
            _ = try make.div(0)
        }catch {
            let error = error as! MyError
            switch error {
            case .DivZero:
                print("除数不能为0")
            default:
                break
            }
        }
    }
    
    print(result)
    

    相关文章

      网友评论

        本文标题:Swift之链式调用

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