菜鸡学Swift3.0 11.闭包

1. 闭包

{(参数:参数类型 , 。。。) -> 返回值类型 in return 函数体 }
var arr = [71,24,56,78]
arr.sorted(by: { (a:Int , b:Int) -> Bool in
    return a > b
})
//[24, 56, 71, 78]

2. 尾随闭包

var arr = [71,24,56,78]
arr.sorted() { (a:Int , b:Int) -> Bool in return a > b }

3. 值捕获

var arr = [71,24,56,78]
var num = 10
// 这是一个尾随闭包,闭包前面的()可以省略掉,闭包内的num可以自动捕获上文中的var变量值
arr.sort(){ a , b in
    abs(a - num) < abs(b - num)
}

4. 函数、闭包是引用类型 类似于拷贝意思

func running(meters: Int) -> ()-> Int {
    var a = 0
    // 这里return的是 下面 { 闭包 }
    return {
        a += meters
        return a
    }
}
// 这里的 planA 是函数类型的变量
var planA = running(meters: 30)
planA() //30
planA() //60
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容