闭包

作者: ZLWorm | 来源:发表于2015-12-27 00:07 被阅读0次

    闭包简介

    与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)")
            }
    

    相关文章

      网友评论

          本文标题:闭包

          本文链接:https://www.haomeiwen.com/subject/sxjbhttx.html