lua中存在一种方法叫闭包它与lua元表有写相似处,有兴趣可以看一下我之前发布的文章lua元表。 首先,我们要清楚lua闭包的定义方法,首先看下面的一个函数方法。
print("**********函数嵌套************")
function F8()
return function()
print(123);
end
end
f9 = F8()
f9()
function F9(x)
return function(y)
return x + y
end
end
f10 = F9(10)
print(f10(5))
上面就是lua的一个嵌套函数中的一个闭包方法。f10 = F9(10),这个方法首先将F9中的闭包函数定义了一个变量将值存储为10,然后在下面调用了一个方法f10(5)又调用了闭包函数使F9中的闭包函数由上一个方法中的值(10)加上当前调用的参数5最后输出的值为15,这个方法就说明了lua的闭包会将参数留在函数中,多次调用闭包不会开辟新的空间,下面这个截图是一个方法输出值。  当然闭包也会有缺点,就是不会触发gc垃圾回收,因为它这个值一直存在,所以gc的垃圾回收不会触发,闭包的优点是节省所需要的时间,就是因为它不会开辟新的空间,但这个也是它所对应的一个缺点。对于项目中使用闭包要在合理的地方使用。
|