@autoclosure 的作用

比如我們有一個(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è)閉包

最后需要注意的是 @autoclosure 并不支持帶有輸入?yún)?shù)的寫法,也就是說(shuō)只有形如 () -> T 的參數(shù)才能使用這個(gè)特性進(jìn)行簡(jiǎn)化。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 參考資源《swifter》https://github.com/iOS-Swift-Developers/Swif...
    柯浩然閱讀 1,536評(píng)論 0 6
  • 嗯哼嗯哼蹦擦擦~~~ 轉(zhuǎn)載自:https://github.com/Tim9Liu9/TimLiu-iOS 目錄 ...
    philiha閱讀 5,265評(píng)論 0 6
  • 過年前,公司提前了幾天放假。這幾天的時(shí)間,除了在忙一些家務(wù)事,處理各種雜七雜八的事情之外,我抽空看了《貨幣金融學(xué)》...
    馬天亮閱讀 6,697評(píng)論 0 2
  • 2005年12月1日10點(diǎn)10分,一個(gè)5.05千克的“巨嬰”呱呱墜地,我也升級(jí)當(dāng)了媽媽,那一年我32歲。 前幾天老...
    洋木說(shuō)閱讀 418評(píng)論 0 1
  • 2018.09.08 周六啦,一周的藍(lán)天白云堅(jiān)持下來(lái)啦。 一早起床吃飯,去芭蕾課。 第一個(gè)到的,自己做準(zhǔn)備活動(dòng)。 ...
    摹喵居士閱讀 237評(píng)論 0 0

友情鏈接更多精彩內(nèi)容