今天朋友推薦了一個有意思的頁面,域名是這樣的:
HTTP://fuckingclosuresyntax.com
在 Swift 中,所有的函數都是閉包,標準的函數只不過是有名字帶參數的最完整的閉包。
好了,以下是正文
作为變量:
1 |
var 闭包名称: (参数类型) -> (返回类型) |
作为可選的變量:
1 |
var closureName: ((parameterTypes) -> (returnType))? |
作为類型別名:
1 |
typealias closureType = (parameterTypes) -> (returnType) |
作为常量:
1 |
let closureName: closureType = { ... } |
作为調用函數時候的參數:
1 |
func({(parameterTypes) -> (returnType) in statements}) |
作为函數的參數:
1 |
array.sort({ (item1: Int, item2: Int) -> Bool in return item1 < item2 }) |
作为函數的參數並使用類型推斷:
1 |
array.sort({ (item1, item2) -> Bool in return item1 < item2 }) |
作为函數的參數並推斷返回類型:
1 |
array.sort({ (item1, item2) in return item1 < item2 }) |
作为函數的最後一個參數:
1 |
array.sort { (item1, item2) in return item1 < item2 } |
作為函數的最後一個參數並且縮寫參數名:
1 |
array.sort { return $0 < $1 } |
作而函數的最後一個參數並且推斷返回值:
1 |
array.sort { $0 < $1 } |
作為函數的最後一個參數,作為一個存在函數的引用:
1 |
array.sort(<) |
作為函數參數帶默認捕獲:
1 |
array.sort({ [unowned self] (item1: Int, item2: Int) -> Bool in return item1 < item2 }) |
作為函數參數帶默認捕獲而且推斷參數類型和返回值類型:
1 |
array.sort({ [unowned self] in return item1 < item2 }) |
這個網站並不准備列舉閉包的所有使用方法。
本文由 落格博客 原創撰寫:落格博客 » 譯:我如何在 Swift 聲明 閉包?
轉載請保留出處和原文鏈接:https://www.logcg.com/archives/1055.html