简要介绍一下:Swift 中的闭包与 C 和 Objective-C 中的代码块(blocks)比较相似。
闭包表达式语法规则:
{ (parameters) -> returnType in
statements
}
举一个例子:
var reversed = sorted(names, { (s1: String, s2: String) -> Bool in return s1 > s2 }
(sorted函数需要两个参数,第一个数组,第二个闭包,闭包返回 true/false)
但是,Swift 的闭包表达式拥有简洁的风格,如下:
- 利用上下文推断参数和返回值类型
reversed = sorted(names, { s1, s2 in return s1 > s2 }
- 隐式返回单表达式闭包,即单表达式闭包可以省略
return
关键字
reversed = sorted(names, { s1, s2 in s1 > s2 }
- 参数名称缩写
reversed = sorted(names, { $0 > $1 } )
- 尾随(Trailing)闭包语法
reversed = sorted(names) { $0 > $1 }
需要说明的地方:
1、尾随闭包比较难理解,需要的自己去找资料
2、闭包可以获取上下文中的常量或变量
3、闭包是引用类型