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