AOL's Web Log

Life is like a box of chocolate , you never know what you gonna get .

原创  lua学习(二) 收藏

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

发表于 @ 2006年06月08日 09:37:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:lua学习(一) | 新一篇:lua学习(三)

  • 发表评论
  • 评论内容:
  •  
Copyright © flashvan
Powered by CSDN Blog