关闭

lua学习(二)

标签: luaactionscriptfunctionc
3078人阅读 评论(0) 收藏 举报
分类:

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:217808次
    • 积分:3183
    • 等级:
    • 排名:第11148名
    • 原创:69篇
    • 转载:9篇
    • 译文:1篇
    • 评论:236条
    最新评论
    软件工程/UML/设计模式