【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: 同名不同参数/返回型的函数
   
捕捉变量
   
   
   
   
   
   
   
闭包的用法与写法
   
   
   
   
   
   
   
闭包与强参照循环
   
   
   
   
   
   
   
闭包的应用
   
   
   
   
   
   
   

猜你喜欢

转载自www.cnblogs.com/lancgg/p/9136817.html