加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

【WIP】Swift4 闭包

发布时间:2020-12-14 05:12:31 所属栏目:百科 来源:网络整理
导读:创建: 2018/06/05 ? ? 闭包的声明 ?闭包的概要 ? { (参数表) - 型 in { ...} ?● 参数不可以带默认值 ?● 参数不可以带标签 ?●? 定义闭包并直接呼出必须要被代入 { return " test " }() // 会报错 var str: String = { return " test " }() // 结果被代入

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读