赞
踩
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的垃圾回收不会触发,闭包的优点是节省所需要的时间,就是因为它不会开辟新的空间,但这个也是它所对应的一个缺点。对于项目中使用闭包要在合理的地方使用。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。