local data = 100 -- data1
local function fun1()
print(data)
data = data+50
end
data = 200
local data = 300 -- data2
local function fun2()
print(data)
data = data+50
end
data = 400
fun1() -- 200
fun2() -- 400
fun1() -- 250
fun2() -- 450
上面代码 闭包的实际运用。
闭包是由函数和与其相关的引用环境组合而成的实体。
所有闭包并不是一个函数,我现在暂且认为闭包是一个对象(后期发现错了再该)。因为函数在运行是只有一个实例,在定义后不会在在执行期间发生变化,而闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。
关于lua闭包大家可以看看这篇文章:
http://www.cnblogs.com/ringofthec/archive/2010/11/05/luaClosure.html
这篇文章中,有讲到lua闭包 = {环境引用, upvalue, env}组成的。