【WIP】Swift4 闭包
创建: 2018/06/05
闭包的声明 | |
闭包的概要 |
{ (参数表) -> 型 in { ... } ● 参数不可以带默认值 ● 参数不可以带标签 ● 定义闭包并直接呼出必须要被代入 {return "test"}() // 会报错 var str: String = {return "test"}() // 结果被代入可以通过编译 ● 递归的话要用下面的写法 var testClosure2: ((Int)->Int)! // 类型声明和定义分开, 类型带! testClosure2 = { (a: Int) -> Int in if a <= 0 { return a } else { return a + testClosure2(a-1) } } // 测试 print(testClosure2(100)) // 5050
|
闭包的参数与返回值的类型声明 |
● 与函数不同 省略返回型的声明的意思: 可以自动判断返回值类型 - 内部只有一行, 则改行的结果为返回值 - 多行: 内部可以判断 |
闭包与函数的型 |
是参照型, 内存管理为ARC (参数的型) -> 返回值的类型 // 返回值型不能省略, Void写做Void或() // 例 (Int, Int) -> Int (Double) -> Bool () -> () // () -> Void 和函数的区别: 函数可以带标签(在型上没区别) |
如何和overload的函数相区别 | overload: 同名不同参数/返回型的函数 |
捕捉变量 | |
闭包的用法与写法 | |
闭包与强参照循环 | |
闭包的应用 | |