1. 闭包
{(参数:参数类型 , 。。。) -> 返回值类型 in return 函数体 }
var arr = [71,24,56,78]
arr.sorted(by: { (a:Int , b:Int) -> Bool in
return a > b
})
//[24, 56, 71, 78]
2. 尾随闭包
var arr = [71,24,56,78]
arr.sorted() { (a:Int , b:Int) -> Bool in return a > b }
3. 值捕获
var arr = [71,24,56,78]
var num = 10
// 这是一个尾随闭包,闭包前面的()可以省略掉,闭包内的num可以自动捕获上文中的var变量值
arr.sort(){ a , b in
abs(a - num) < abs(b - num)
}
4. 函数、闭包是引用类型 类似于拷贝意思
func running(meters: Int) -> ()-> Int {
var a = 0
// 这里return的是 下面 { 闭包 }
return {
a += meters
return a
}
}
// 这里的 planA 是函数类型的变量
var planA = running(meters: 30)
planA() //30
planA() //60