lua之闭包

来源:互联网 发布:数据库驱动文件 编辑:程序博客网 时间:2024/04/28 23:05

 闭包 这个词听起很新颖,我初步理解了这个闭包之后,感觉这个东西就是类样,闭包在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/

0 0