闭包函数
1. 概念
通过调用含有一个内部函数加上该外部函数持有的外部局部变量(upvalue)的外部函数(就是工厂)产生的一个实例函数
2. 组成
外部函数+外部函数创建的upvalue+内部函数(闭包函数)【形成的闭包是引用类型的】
3. 案例
格式
function function_name1( ... )
--body
return function function_name2( ... )
-- body
end
end
实现
b = 10
function BB( )
b = b+2 --b在这里加2
return function()
print(b)
b = b+1 --b在这里加1
print(b)
end
end
t1 = BB() --引用 类似于c++ 的指针函数
t1() --12 13
t2 = BB() --引用
t2() --15 16
在结果中发现t1中的结果为12 13,而t2 是15 16
为什么t2与t1不相等呢?
先来看看地址
如果输出地址的话
t1 function: 00A9C118
t2 function: 00A9C1F8
地址不一样
这时候我们可以想一下c++的指针
两指针指向同一段内存的地址
两个指针却有自己的地址
这里也是这个道理;