第六章:函式(function)
6.6 自動閉包。
本節主要知識點: 對@autoclosure 和@escaping 標註的使用場景及用法進行了介紹。
知識點1:短路求值
:像&&
和||
操作符中, 只要左邊不符合條件或者符合條件就直接忽略(短路掉)右邊的運算元。
///這裡我們依賴了短路求值, 第一個運算元不符合要求時候直接不走對應的邏輯程式碼
let evens = [2, 4, 6]
if !evens.isEmpty && evens[0] > 10 {
//do something
}
複製程式碼
我們自己來手動寫一個和&&效果相同的函式
[圖片上傳失敗...(image-6beb79-1548484726231)]
這個時候你會發現你的方法呼叫完全不認識,怎麼這麼醜
。
此時此刻~ @autoclosure標註的作用就來了: 讓你的引數自動封裝成一個閉包。
現在我們的寫法就變成了如下:
[圖片上傳失敗...(image-c47662-1548484726231)]
清新脫俗,通俗易懂!
@escaping(逃逸閉包的標註) 標註
知識點1:閉包作為引數預設都是非逃逸閉包
。
注:一句話介紹@escaping的作用就是延長
閉包作為引數時候的生命週期
。
注2: 一般在專案中網路請求的回撥用作為閉包時 系統就會強制新增
閉包引數加@escping標註。
相信swift開發者在專案中肯定用(被系統強制用)過@escaping標註。 這裡就不贅述了。
6.7 總結
這一章很重。慢慢消化~