6.7 Swift闭包捕获值

前端之家收集整理的这篇文章主要介绍了6.7 Swift闭包捕获值前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

/**

闭包的捕获值

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

*/

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

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

}

猜你在找的Swift相关文章