今天朋友推荐了一个有意思的页面,域名是这样的:
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