闭包 这个词听起很新颖,我初步理解了这个闭包之后,感觉这个东西就是类样,闭包在lua中主要是 当你定义一个闭包,并创建了这个闭包的变量,闭包里面的值可以保存, 像在C++的里面static变量样,你写static int a = 5,其实这句只运行一次,你后面在执行到这里就自动跳过了,闭包可以创建N多个变量,每个变量的值又不一样,这就像类了,类有独立空间,里面的值是独立的,跟该类的其他实例无关,除了static的哈,而这闭包呢,差不多就是这意思了。 不过lua因为它可以 将一个函数赋给一个变量,可以在子函数里访问上一级函数的局部变量,所以就叫闭包了。 闭包看着字面意思就像类,跟类还是有点区别。
function newCounter()
local i = 0;
return function ()
i = i+1;
return i ;
end
end
c1 = newCounter();
print(c1()); ---------------------1
print(c1()); ---------------------2
c2 = newCounter();
print(c2()) ---------------------1
理解成类,觉得这东西就不怎么神秘了。
转载自:http://cplusplus2012.blog.163.com/blog/static/2066762682012725105319734/