闭包的本质是一个函数 闭包 与 OC中的Block相似 来看这样一段代码 var arr:[Int] = [] for _ in 0..<100{ arr.append(random()%1000) } func biggerNumberFirst(a:Int , _ b:Int) -> Bool{ return a > b } arr.sort(biggerNumberFirst) 使用闭包 arr.sort({ (a:Int , b:Int) -> Bool in return a > b }) 闭包的化简 并不一定非要去使用最简单的写法,有时候会失去程序的可读性,我们要在代码的简洁性和易读性找到一个平衡点 1.复杂的闭包最好还是清楚的写出变量名 和返回值类型 arr.sort({(a:Int , b:Int) -> Bool in return a > b}) 2.简单的闭包就使用此种 arr.sort({ a , b in return a > b}) 3 arr.sort({ a , b in a > b}) 4 如果没有给变量命名 swift自动命名变量名 $0 $1 $2....类型肯定是Int(因为sort函数的参数是Int类型)返回值一定是Bool型 arr.sort({ $0 > $1}) 5 >(大于号) 本身就是一个函数 arr.sort(>) 结尾闭包 如果函数是作为最后一个参数,那么就可以使用结尾闭包 arr.sort(){(a:Int , b:Int) -> Bool in return a > b} 一般这样写易读性较强 arr.sort(){(a:Int , b:Int) -> Bool in return a > b }