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