全系列导航:Swift5.0 系列博客索引
//注意,这是一个闭包方法
func getIncFunc(inc: Int) -> (Int) -> Int
{
var max = 10
func incFunc(x :Int) ->Int{
print("incFunc函数结束")
// return inc + x
max+=1
return max + x
}
// 当执行到这一句时inc参数就应该被释放了, 但是由于在内部函数中使用到了它, 所以它被捕获了
// 同理, 当执行完这一句时max变量就被释放了,但是由于在内部函数中使用到了它, 所以它被捕获了
print("getIncFunc函数结束")
return incFunc
}
// 被捕获的值会和与之对应的方法绑定在一起, 同一个方法中的变量会被绑定到不同的方法中
let incFunc = getIncFunc(inc: 2)
print(incFunc(5))
print(incFunc(5))
let incFunc2 = getIncFunc(inc: 5)
print(incFunc2(5))