Swift iOS : 閉包的一個應用

我閱讀一個開源代碼的過程當中,經常發現有這樣的結構:bash

var textLabel:UILabel = {
    let label = UILabel()
    label.backgroundColor = .red
    return label
}()複製代碼

功能可以編譯,可以運行,所以語法固然是對的,直接望文生義也知道代碼要幹啥,只是,這是什麼語法?閉包

既然咱們關心的是語法結構,那麼簡化下就是這樣樣子,對咱們要研究的問題並沒有影響,可是更加簡單:函數

var a = {return 42}複製代碼

這樣,咱們能夠打印來驗證它是啥?ui

var a = {return 42}
    print(a)//(Function)
    print(a())//42複製代碼

結果打印出來是spa

(Function)
42複製代碼

這說明{}就是定義了一個閉包,而且此閉包是沒有參數的。雖然,閉包常常用於函數參數,可是直接調用也無不可。加上()就會指定這個函數。這塊函數的定義和調用真是超級靈活,感受和JavaScript的函數式同樣的了。code

相關文章
相關標籤/搜索