lua学习(二)

原创 2006年06月08日 09:37:00

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

相关文章推荐

lua5.3与C++交互学习(二)

C++中对lua协程和返回值的处理lua语言中, 在coroutine的resume和yield之间可以相互传递参数, 最近研究了下lua_resume和lua_yield 两个函数, 同样利用这两个...

lua学习笔记(二)

一、深入lua函数 一些必要的概念: 参考自:https://www.douban.com/note/183992679/?type=rec#sep http://en.wikipedia.or...

Lua 学习笔记(二) —— Scite 的配置文件讲解

Scite的配置文件ru SciTEGlobal.properties 全局配置文件,一般不去改动 SciTEUser.properties 用户配置文件,对全局配置要改动的地方,都写在这个文...

Lua学习二

1.对于Lua而言,函数其实也是一种变量,故而系统的函数名实际上也是一种变量名: a={p=print} a.p("good") 输出good 2.函数定义,实际上是将一个类型为functio...

Lua学习笔记(二)

1.type函数总是返回一个字符串,因此    print(type(type(x)))    的输出结果是string 2.函数是作为"第一类值"来看待的,可以像操作其他值一样来操作一个函数值 3....
  • zzh0923
  • zzh0923
  • 2013年10月15日 15:48
  • 969

lua 学习笔记 二

11.0 lua中的习惯一般是以1作为数组的起始索引,lua库和长度操作符都遵循这个约定。 对于稀疏矩阵,存在大量的“空洞(nil值)”,遍历矩阵的效率很低,通常使用pairs且只遍历非nil元素...

0基础lua学习(二) 数据类型

1.  命名规范 a)    区分大小写 b)   不要使用关键字命名 c)     数字、字母、下划线、不要以数字开头,避免以下划线开头,或者后面是大写字母的命名 2.  类型与值 a)   ...

Lua基础学习二——表和函数

版权声明:本文由( 小塔 )原创,转载请保留文章出处! 本文链接: http://www.zaojiahua.com/lua-type.html Lua中的表和函数比较重要,正是因为二者的结...

Lua 入门学习教程(二) 函数 与 回调函数

还记得开始学C语言的时候,书上就拿两个数相加 作为例子,来介绍函数。我也拿 Add 来说吧。...

Quick-Cocos2d-x学习手册(二): 纯Lua实现CocoStudioGUI布局

本文主要介绍如何用Lua创建CocoStudioGUI,并实现各种布局方式。 此文中,将用CocoStudio的UI编辑器制作、并能导入Cocos2d-x中使用的UI系统,称为CocoStu...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:lua学习(二)
举报原因:
原因补充:

(最多只允许输入30个字)