闭包

闭包简介

与OC中的Block类似,闭包主要用于异步操作执行完成后的代码回调,网络访问结果以参数的形式传递给调用方

  • 与OC中的 block 类似
  • 也是一个预先定义好的代码块
  • 在需要的时候执行
  • 可以作为函数的参数,也可以作为函数的返回值
  • 包含self时也是需要注意循环引用的问题

定义闭包的几种形式

  • 没有参数没有返回值
//定义
let cloures = {
    print("闭包打印")
}
//执行
cloures()
  • 有参数没有返回值
//格式 let 闭包名 = {(参数列表) in __闭包的执行代码__}
let cloures = {(num1 a:Int, num2 b:Int) in 
    let result = a + b
    print("打印输出:\(result)")
}

cloures(num1: 10, num2:20)
  • 有参数有返回值
//格式 let 闭包名 = {(参数列表) -> 返回值类型 in __闭包的执行代码__}
let cloures = {(num1 a: Int, num2 b: Int) -> Int in
    let result = a + b
    return result
}

let result = cloures(num1: 10, num2: 20)

闭包没有返回值的三种情况

  • 闭包没有返回值的三种情况和函数的写法一样
        // 啥都不写
        let cloures1 = { (num1 a: Int, num2 b: Int) in
            let result = a + b
            print("打印输出:\(result)")
        }
        
        // -> ()
        let cloures2 = { (num1 a: Int, num2 b: Int) -> () in
            let result = a + b
            print("打印输出:\(result)")
        }
        
        // -> Void
        let cloures3 = { (num1 a: Int, num2 b: Int) -> Void in
            let result = a + b
            print("打印输出:\(result)")
        }
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容