@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 的参数才能使用这个特性进行简化。

你可能感兴趣的:(@autoclosure 的作用)