天天看點

Swift中慵懶的閉包

閉包的懶惰史概括:調用閉包的地方,此處本來應該是一個函數。但是這個函數可能比較的簡單,或者僅僅調用一次。可以将閉包做當函數作為參數傳入。

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