您的位置:首页 > 移动开发 > Swift

6.7 Swift闭包捕获值

2016-12-17 11:02 281 查看
        /**

         闭包的捕获值

         

         

         也就是闭包可以捕获上下文中的值

         */

        

        

        let incFunc1 =
getInFunc(inc: 3)

        print(incFunc1)

        print("------------------>")

        print(incFunc1(10))

        

        

        

        let incFunc2 =
getInFunc2(inc: 3)

        print("------------------>")

        print(incFunc2(10))

        print(incFunc2(10))

        

        /**

         v==10

         inc==3

         mt==11

         24

         

         v==10

         inc==3

         mt==12    // 它记住了上次的值11,
并不是说又变成10

         25

         

         */

    // 返回的是一个闭包 (Int) -> Int

    func getInFunc(inc:Int) -> ( (Int) ->
Int ) {

        

        func incFunc(v:
Int) -> Int {

        

            print("v==\(v)")

            print("inc==\(inc)")

            

            // inc在函数中生命周期结束了,但是可以捕获 inc的


            return inc + v

        }

        

        return
incFunc

    }

    

    

    // 返回的是一个闭包 (Int) -> Int

    func getInFunc2(inc:Int) -> ( (Int) ->
Int ) {

        

        var mt =
10

        

        func incFunc(v:
Int) -> Int {

            

            mt = mt + 1

            print("v==\(v)")

            print("inc==\(inc)")

            print("mt==\(mt)")

            

            // inc, mt
在函数中生命周期结束了,但是可以捕获 inc, mt的


            return inc + v + mt

        }

        

        return
incFunc

    }

    
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: