@autoclosure 的作用

比如我们有一个方法,该方法可以接受一个闭包作为参数

func logIfTrue(_ test: () ->Bool) {
    if test() {
        print("true")
    }
}

我们执行这个方法可以有一下几种方式

1. logIfTrue { () -> Bool in
    return true
}
2. logIfTrue({return true})
3. logIfTrue{return true}

写起来比较麻烦,其实在Swift 中我们可以对闭包进行简化,这时候就可以使用@autoclosure了,@autoclosure的作用就是可以把一个表达式自动转换成闭包

func logIfTrue(_ test: @autoclosure () ->Bool) {
    if test() {
        print("true")
    }
}

此时我们在执行该方法的时候就变成了下面这种方式

logIfTrue(true)

它本质上是把 true 转换成了 () ->Bool 这个闭包

最后需要注意的是 @autoclosure 并不支持带有输入参数的写法,也就是说只有形如 () -> T 的参数才能使用这个特性进行简化。

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

推荐阅读更多精彩内容

  • 参考资源《swifter》https://github.com/iOS-Swift-Developers/Swif...
    柯浩然阅读 1,478评论 0 6
  • 嗯哼嗯哼蹦擦擦~~~ 转载自:https://github.com/Tim9Liu9/TimLiu-iOS 目录 ...
    philiha阅读 5,038评论 0 6
  • 过年前,公司提前了几天放假。这几天的时间,除了在忙一些家务事,处理各种杂七杂八的事情之外,我抽空看了《货币金融学》...
    马天亮阅读 6,625评论 0 2
  • 2005年12月1日10点10分,一个5.05千克的“巨婴”呱呱坠地,我也升级当了妈妈,那一年我32岁。 前几天老...
    洋木说阅读 384评论 0 1
  • 2018.09.08 周六啦,一周的蓝天白云坚持下来啦。 一早起床吃饭,去芭蕾课。 第一个到的,自己做准备活动。 ...
    摹喵居士阅读 181评论 0 0