Swift之链式调用

代码环境

  • 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)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,229评论 4 61
  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,208评论 25 708
  • 《梦里不知身是客》 尘世萧索,便没有深爱之人 昨夜的梦依稀将我摁进烙铁里 感受这飘向皮囊的灵魂 这样显得无所事事 ...
    幽明m阅读 234评论 6 11
  • 每天晚上我都会坐在窗前发呆,看着前海,灯火辉煌。 想起来大四毕业旅行时期,那一路我们专业就三个人。毕业旅行分为三队...
    画布坊阅读 647评论 14 6
  • 手机微信截图的几种方法教程
    试遣愚衷阅读 120评论 0 0