Lua 闭包知识点 -- 学习过程笔记,会比较乱

来源:互联网 发布:我的恐怖妻子 知乎 编辑:程序博客网 时间:2024/06/01 21:39
local data = 100    -- data1local function fun1()    print(data)    data = data+50enddata = 200local data = 300    -- data2local function fun2()    print(data)    data = data+50enddata = 400fun1()      -- 200fun2()      -- 400fun1()      -- 250fun2()      -- 450

上面代码 闭包的实际运用。
闭包是由函数和与其相关的引用环境组合而成的实体。
所有闭包并不是一个函数,我现在暂且认为闭包是一个对象(后期发现错了再该)。因为函数在运行是只有一个实例,在定义后不会在在执行期间发生变化,而闭包在运行时可以有多个实例,不同的引用环境和相同的函数组合可以产生不同的实例。


关于lua闭包大家可以看看这篇文章:

http://www.cnblogs.com/ringofthec/archive/2010/11/05/luaClosure.html

这篇文章中,有讲到lua闭包 = {环境引用, upvalue, env}组成的。