闭包的本质是一个函数
闭包 与 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
}
最后编辑于 :2017.12.03 05:28:36
©著作权归作者所有,转载或内容合作请联系作者 【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。 平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。