闭包表达式语法具有以下一般形式:
{ (<#parameters#>) -> <#return type#> in <#statements#> }
reversedNames = names.sorted(by: { (s1: String, s2: String) -> Bool in
return s1 > s2
})
这也意味着,如果将一个闭包分配给两个不同的常量或变量,则这两个常量或变量都引用同一个闭包。
let alsoIncrementByTen = incrementByTen
alsoIncrementByTen()
// returns a value of 50
incrementByTen()
// returns a value of 60
上面的示例显示调用
alsoIncrementByTen与调用incrementByTen相同。因为它们都引用相同的闭包,所以它们都会递增并返回相同的运行总计。
当闭包作为参数传递给函数时,称为转义函数,但在函数返回后调用。当你声明一个将闭包作为其参数之一的函数时,你可以在参数类型之前写入 @escaping 以指示允许闭包转义。