自动闭包@autoclosure

自动闭包@autoclosure


什么是自动闭包

  • 自动闭包就是把一个表达式直接自动闭合一个闭包,这样看起来就比较好看了,难到只是为了好看吗?错了,这还是苹果优化性能的方法。为啥这么说类,你一会就会明白了。
func sendRequest(argc1: String, arc2: String, completionHandle: () -> Bool) {
    if completionHandle() {
        print(argc1, arc2)
    }
}

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

  • 我们不是说自动闭包还以让闭包变得漂亮吗
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
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值