比如我们有一个方法,该方法可以接受一个闭包作为参数
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 这个闭包