iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0

鐵人的第三天,來聊聊閉包

  • 閉包是一種函式
  • 閉包是沒有名稱的函式且無法獨立存在,需儲存在一個常數裡
  • 可以被當作參數來傳遞
  • 蘋果官方Cloure語法內(Closure Expression Syntax)
{ (parameters) -> return type in
    statements
}
{(參數) -> 回傳型別 in
    程式碼
}

尾隨閉包 (Trailing Closures)

  • 當閉包表達式為function的最後一個參數,就可以使用尾隨閉包
  • 在呼叫閉包的時候可以移除參數及冒號

捕獲值 (Capturing Values)

  • 閉包能夠從上下文中捕獲已被定義的常數和變數。
  • 最簡易使用是嵌套函式,即是定義在函式內的“函式”
  • 嵌套函式可捕獲外部函式所有的參數以及定義的常數和變數

Closures Are Reference Types

從上述的例子,thing為常數。但裡面常數的值還是能夠被捕獲。
是因為functions和closures都是reference type。
不論定義了幾個常數或變數,常數或變數的值都是參考同一個位置的記憶體

逃逸閉包(Escaping Closures)

一般傳入函式的閉包,會造著步驟立即被執行。
逃逸閉包是在函式執行結束之後才會被呼叫。

  • 在呼叫陣列第一順序時,逃逸閉包的函式才被加入。在函式執行完後才執行到“閉包執行”。

上一篇
Swift-函式 (Function)
下一篇
Swift-Class & Struct
系列文
Swift!從新手到微上手30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言