iOS Dev

Swift之链式调用

2016-12-26  本文已影响127人  LimChihi

代码环境

原理

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

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)
上一篇下一篇

猜你喜欢

热点阅读