swift3 闭包表达式
2017-03-20 10:24
232 查看
1.闭包表达式概念
闭包是功能性自包含模块,可以在代码中被传递和使用。 Swift 中的闭包与 C 和 Objective-C中的 blocks 以及其他一些编程语言中的 lambdas 比较相似。闭包可以 捕获 和存储其所在上下文中任意常量和变量的引用。 这就是所谓的闭合并包裹着这些常量和变量,俗称闭包。Swift会为您管理在 捕获 过程中涉及到的内存操作。
在Swift函数章节中介绍的全局和嵌套函数实际上也是特殊的闭包,闭包采取如下三种形式之一:
全局函数是一个有名字但不会捕获任何值的闭包
嵌套函数是一个有名字并可以捕获其封闭函数域内值的闭包
闭包表达式是一个利用轻量级语法所写的可以捕获其上下文中变量或常量值的没有名字的闭包
Swift的闭包表达式拥有简洁的风格,并鼓励在常见场景中以实现语法优化,主要优化如下:
利用上下文推断参数和返回值类型
单表达式(single-expression)闭包可以省略 return 关键字
参数名称简写
Trailing 闭包语法
2.闭包表达式的语法格式
{ (参数列表) ->返回值类型 in 语句组 }
3.闭包表达式的写法
//sorted函数用于对数组排序, 只接受一个函数型参数, 描述排序逻辑。 var city = ["z","x","h","n"] var cityRank1 = city.sorted() //["h", "n", "x", "z"] //0.不用闭包的倒序方法 func daoxu(a: String,b:String) -> Bool { return a > b } var cityRank2 = city.sorted(by: daoxu) //["z", "x", "n", "h"] //1.用闭包表达式来改写 var cityRank3 = city.sorted { 4000 (a: String,b:String) -> Bool in return a > b } //["z", "x", "n", "h"] //2.闭包的自动推断:参数和返回类型可自动推断 //参数类型 和 返回值类型 省略,单表达式可以忽略return关键词 var cityRank5 = city.sorted { (a, b) in a > b } //["z", "x", "n", "h"] //3.可使用快捷参数,前缀$,从0开始递增 var cityRank6 = city.sorted { $0 > $1 } cityRank6 //["z", "x", "n", "h"]
4.闭包表达式的用法
func calculate(opr :String)-> (Int,Int)-> Int { var result : (Int,Int)-> Int switch (opr) { case "+" : // result = {a, c in return a + c }//与下句同义 result = {$0 + $1} default: // result = {a, b in return b - a }//与下句同义 result = {$1 - $0} //注意:{$1 - $0}和{$0 - $1}是不同的 } return result; } let f1:(Int,Int)-> Int = calculate(opr: "+") print("10 + 5 = \(f1(10,5))") //"10 + 5 = 15\n" let f2:(Int,Int)-> Int = calculate(opr: "-") print("5 - 10 = \(f2(10,5))") //"5 - 10 = -5\n"
参考自
SwiftV课堂视频源码
http://blog.csdn.net/tonny_guan/article/details/39058571
相关文章推荐
- Swift闭包表达式
- Swift2.0中使用闭包表达式进行类之间进行通信
- Swift 闭包表达式
- Swift学习笔记 闭包表达式
- swift2.0 用闭包表达式 代替 protocol 传值回调
- Swift 闭包表达式-来自CocoaChina
- 6.2 Swift闭包表达式的语法
- Swift 闭包表达式
- swift3 闭包表达式
- 6.3 Swift闭包表达式作为回调函数
- Swift使用闭包表达式
- Swift基础-闭包表达式语法
- Swift 闭包表达式
- 6.4 Swift闭包表达式语法优化
- Swift使用闭包表达式
- Swift闭包表达式
- 【note】Swift之闭包表达式的几种简化缩写形式
- Swift 闭包表达式
- Swift闭包表达式
- swift学习之三:闭包表达式