閉包的懶惰史概括:調用閉包的地方,此處本來應該是一個函數。但是這個函數可能比較的簡單,或者僅僅調用一次。可以将閉包做當函數作為參數傳入。 閉包的完整格式 。此時: (參數标簽:{ (value1:Int, value2:Int)->Bool in 函數體 } ) 閉包的懶惰第一步 。因為函數調用的時候,知道傳入的這個函數類型的參數的傳回值類型和參數類型。于是此處閉包省略了參數類型和傳回值類型 。此時: (參數标簽:{ (value1, value2) in 函數體 } ) 閉包的懶惰第二步。閉包的參數值 在函數體中可以預設使用 $0 和$1 替代。于是閉包省略了參數和in關鍵詞。此時: (參數标簽:{ 函數體 } ) 閉包的懶惰第三步。如果函數調用的這個函數參數是最後一個參數,閉包可以寫到小括号外面去(尾随閉包),同時省略了 參數标簽,牛。此時: (){ 函數體 } 閉包的懶惰第四步。如果調用函數僅有一個參數,且這個參數是一個閉包參數。那麼,這個閉包就可以把調用函數的小括号也省略掉。此時: { 函數體 }