Swift - 闭包

闭包的本质是一个函数
闭包 与 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
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 闭包是自包含的函数代码块,可以在代码中被传递和使用。Swift 中的闭包与 C 和 Objective-C 中的代...
    穷人家的孩纸阅读 5,665评论 1 5
  • 闭包是功能性自包含模块,可以在代码中被传递和使用。Swift中的闭包与 C 和 Objective-C中的 blo...
    AirZilong阅读 2,707评论 0 2
  • 闭包可以从定义它们的上下文中捕获和存储对任何常量和变量的引用。 这被称为关闭这些常量和变量。 Swift处理所有的...
    Joker_King阅读 3,660评论 0 2
  • * 闭包 是自包含的函数代码块,可以在代码中被传递和使用。swift中的闭包和Objective-C中的代码块(b...
    EndEvent阅读 4,280评论 4 8
  • Swift 中的闭包是自包含的函数代码块,可以在代码中被传递和使用。类似于OC中的Block以及其他函数的匿名函数...
    乔克_叔叔阅读 3,440评论 1 3