[swift 進階]讀書筆記-第六章:函式 C6P6_7 自動閉包_總結

liaoWorking在掘金發表於2019-01-26

第六章:函式(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 總結


這一章很重。慢慢消化~

文章原始檔地址

相關文章