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 } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |