闭包(closure)在Swift中扮演了重要角色,而尾随闭包只是闭包的一种精简方式,就如闭包参数的$0
和$1
一样。其目的就是为了易读和简洁。
-
声明一个接受闭包的函数
注意,只有最后一个参数为闭包时才可以使用尾随闭包
func seporateString(string: String, handler: (str1: String, str2: String) -> Void) -> Bool {
if string.startIndex < string.endIndex.advancedBy(-2) {
let str1 = string.substringToIndex(string.endIndex.advancedBy(-2))
let str2 = string.substringFromIndex(string.endIndex.advancedBy(-2))
handler(str1: str1, str2: str2)
return true
}
return false
}
2. 普通调用,将闭包按原函数形式,参数对应地调用
```
//普通调用
seporateString("seporator", handler: { (str1, str2) ->Void in
print(str1)
print(str2)
})
- 使用尾随闭包,将闭包置于函数后,并省去参数
//尾随闭包(带有具体参数)
seporateString("seporator") { (str1, str2) ->Void in
print(str1)
print(str2)
}
- 尾随闭包,将参数名也省去
// 尾随闭包(使用$0,$1...)
seporateString("seporator") {
print($0)
print($1)
}