比如我們有一個方法抡秆,該方法可以接受一個閉包作為參數(shù)
func logIfTrue(_ test: () ->Bool) {
if test() {
print("true")
}
}
我們執(zhí)行這個方法可以有一下幾種方式
1. logIfTrue { () -> Bool in
return true
}
2. logIfTrue({return true})
3. logIfTrue{return true}
寫起來比較麻煩奕巍,其實(shí)在Swift 中我們可以對閉包進(jìn)行簡化,這時候就可以使用@autoclosure了儒士,@autoclosure的作用就是可以把一個表達(dá)式自動轉(zhuǎn)換成閉包
func logIfTrue(_ test: @autoclosure () ->Bool) {
if test() {
print("true")
}
}
此時我們在執(zhí)行該方法的時候就變成了下面這種方式
logIfTrue(true)
它本質(zhì)上是把 true 轉(zhuǎn)換成了 () ->Bool 這個閉包