lua的有一个重要的概念就是闭包 :)
试一下 :
function newCounter()
local i = 0
return function() -- 匿名函数
i = i + 1
return i
nd
end
c1 = newCounter()
print(c1()) --> 1
print(c1()) --> 2
其实actionscript也存在这种概念, 只是不推荐这样使用了
function newCounter()
{
var i = 10;
return function () // 匿名函数
{
i = i + 1;
return i;
};
}
var c1 = newCounter();
trace(c1()); // 1
trace(c1()); // 2
调用newCounter就会建立一个闭包, i 不会被回收. 相对于匿名函数来说, i是它外部的局部变量, 它可以访问得到.
从而会改变i的值 :)
如果你另调一个newCounter就会另建一个闭包 :)
var c2 = newCounter();
trace(c2()); // 1
trace(c1()); // 3
trace(c2()); // 2
理解闭包概念
本文通过Lua和ActionScript示例介绍了闭包的基本概念及其工作原理。闭包允许一个函数访问并修改其外部作用域内的变量,即使该函数在其定义的作用域之外被调用。
1463

被折叠的 条评论
为什么被折叠?



