闭包 Closure
闭包是一种函数的简写形式,省去函数名,把参数和返回值放回花括号内
{(a:Int,b:Int)-> Int in
return ...
}
// 闭包表达式
/*
有时候需要更简洁的使用函数的方式
尤其是一个函数的某参数是另一个函数时
*/
var city = ["zhengzhou","xiamen","nanchang","hefei"]
var cityRank1 = city.sorted()
func daoxu(a:String,b:String) -> Bool {
return a > b
}
var cityRank2 = city.sorted(by: daoxu)
// 闭包改写
var cityRank3 = city.sorted { (a, b) -> Bool in
return a>b
}
/*
闭包的自动推断
1.参数和返回类型可自动推断,单表达式可以忽略return关键词
2.可使用快捷参数,前缀$,从0开始递增
*/
var cityRank4 = city.sorted { (a, b) in
a>b
}
var cityRank5 = city.sorted {$0 > $1}
cityRank5