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
}
// 普通调用
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)
}
尾随闭包是普通闭包的精简模式,但是注意不要在非最后一个参数时使用!
上述代码在playground的运行结果如下: