美文网首页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之链式调用

    代码环境 Swift 3.0.2 macOS 10.12.2 Xcode Version 8.2 (8C38) 原...

  • Swift 实践篇之链式 UI 代码

    Swift 实践篇之链式 UI 代码 Swift 实践篇之链式 UI 代码

  • Swift 链式调用

    说明 在js里面链式调用 大行其道。他可以给我们减少一些不必要的代码量,而且可以让代码开起来更美观。因此突发奇想的...

  • 像swift一样书写OC代码OC链式编程实践

    链式编程特点 链式编程 = 点语法 事物 串联 同样的hello word代码 OC和swift调用函数时候最大的...

  • swift 可选链式调用

    可选链式调用是指在当前值可能为ni的情况下,用当前值去获取它的属性、方法及其下标如果可选值有值,调用就会成功如果可...

  • Swift - 可选链式调用

    可选链式调用是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会...

  • Swift可选链式调用

    可选链式调用是一种可以在当前值可能为nil的可选值上请求和调用属性、方法及下标的方法。如果可选值有值,那么调用就会...

  • iOS - Swift为UIButton扩展Block点击事件

    使用Swift为UIButton扩展Block点击事件,更快捷的完成UIButton事件调用及链式事件的调用 扩展...

  • Swift:Alamofire的异步链式调用

    Alamofire是很常用的swift网络库,本文将分析Alamofire的链式调用。对Alamofire不是很熟...

  • swift重温笔记(可选链式调用)

    使用可选链式调用代替强制展开 为可选链式调用定义模型类 通过可选链式调用访问属性 通过可选链式调用调用方法 通过可...

网友评论

    本文标题:Swift之链式调用

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