美文网首页
自动闭包@autoclosure

自动闭包@autoclosure

作者: 张义飞 | 来源:发表于2017-03-16 17:45 被阅读0次

自动闭包@autoclosure

什么是自动闭包

  • 自动闭包就是把一个表达式直接自动闭合一个闭包,这样看起来就比较好看了,难到只是为了好看吗?错了,这还是苹果优化性能的方法。为啥这么说类,你一会就会明白了。

func sendRequest(argc1: String, arc2: String, completionHandle: () -> Bool) {
    if completionHandle() {
        print(argc1, arc2)
    }
}

sendRequest(argc1: "5", arc2: "6") { () -> Bool in
    return true
}

QQ20170316-164041@2x.png
  • 我们不是说自动闭包还以让闭包变得漂亮吗

func sendRequest(argc1: String, arc2: String, completionHandle: @autoclosure () -> Bool) {
    if completionHandle() {
        print(argc1, arc2)
    }
}

sendRequest(argc1: "5", arc2: "6", completionHandle: true)

  • 哇就是好漂亮啊,不是说可以传表达式吗?我试试看

sendRequest(argc1: "5", arc2: "5", completionHandle: 3 < 5)

  • yes ,没错是不是你又想起了sorted函数了,知道为啥可以那么传参数了吧

什么时候可以使用自动闭包类,

闭包类型是是这样的() -> T

  • 不是说自动闭包可以提升性能吗

  • 来两个表达式


let conditio1 = 3 + 6 > 5
let condition2 = 5 + 2 < 3

if conditio1 && condition2 {
    print("为真")
}

  • 我们知道条件1为假,条件2都不用计算了。 conditio1 || conditio2 条件1为真,条件2也不用计算了。这样并不会影响结果,而且还减少了一次计算。这就是性能上有了优化。这和我们的闭包有啥关系类。接着看列子

func logTrue(condition1: () -> Bool, condition2: () -> Bool) {
    if condition1() && condition2() {
        print("condition1和condition2为真")
    }
}


logTrue(condition1: { () -> Bool in //这样写是为了让大家看一下到底是不是我们说的那样
    print("执行了condition1")
    return 3 + 1 > 10
}) { () -> Bool in
    print("执行了condition2")
    return 3 + 2 > 20
}

QQ20170316-173117@2x.png
  • 大家可以试试其他情况。遇到()-> T 请使用自动闭包,不用谢。

好了自动闭包也说完了,我也就懂这么深了,以后有新新想法在过来补充吧。欢迎您的评论。

相关文章

  • Swift 关于AUTOCLOSURE 和 ??

    转正:autoclosure:可理解为自动识别的闭包http://swifter.tips/autoclosure/

  • 自动闭包@autoclosure

    自动闭包@autoclosure 什么是自动闭包 自动闭包就是把一个表达式直接自动闭合一个闭包,这样看起来就比较好...

  • @autoclosure(自动闭包)

    Apple 为了推⼲和介绍 Swift,破天荒地为这⻔语⾔开设了⼀个博客(当然我觉着是因为 Swift 坑太多需要...

  • ios 经典面试案例 (六)

    Swift autoclosure的作用? 1:自动闭包,顾名思义是一种自动创建的闭包,用于包装函数参数的表达式,...

  • @autoclosure 和 ??

    自动关闭关键字 @autoclosure 使用与参数类型的()-> T 的闭包 ,这个闭包的参数为空,带有参数的闭...

  • @autoclosure、@noescape和@escape

    @autoclosure:字面意思为自动闭包,该关键字用于在函数或者方法的闭包类型参数前面,但是闭包类型被限定在无...

  • 从??(空合运算符)看autoclosure

    ## 1:autoclosure初识 先看一下书上的解释:自动闭包是一种自动创建的闭包,用于包装传递给函数作为参数...

  • swift @autoclosure(自动闭包)

    Apple 为了推⼲和介绍 Swift,破天荒地为这⻔语⾔开设了⼀个博客(当然我觉着是因为 Swift 坑太多需要...

  • Swift基础知识

    autoclosure @autoclosure 做的事情就是把一句表达式自动地封装成一个闭包。用法就是在类型签名...

  • [swift 进阶]读书笔记-第六章:函数 C6P6_7 自动

    第六章:函数(function) 6.6 自动闭包。 本节主要知识点: 对@autoclosure 和@escap...

网友评论

      本文标题:自动闭包@autoclosure

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