创建: 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: 同名不同参数/返回型的函数 |
捕捉变量 | |
闭包的用法与写法 | |
闭包与强参照循环 | |
闭包的应用 |
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。