function(函数)
在Lua中,函数是被看作“第一类值(First class Value)”。函数可以存在变量里。function可以以匿名函数(anonymous function)的方式通过参数传递。
thread(线程)
在Lua中,最重要的线程是协同程序,它跟线程差不多,拥有自己独立的栈,局部变量和指令指针,可以跟其他协同程序共享全局变量和其他大部分东西。
userdata(自定义类型)
userdata是一种用户自定义数据,用于表示一种由应用程序C/C++语言库所创建的类型,可以将任意C/C++的任意数据类型的数据(通常是struct和指针)存储到Lua变量中调用。
Lua变量
变量在使用之前,必须在代码中声明,即创建该变量。Lua变量有三种类型:全局变量,局部变量,表中的域。
Lua中的变量全是全局变量,哪怕是语句块或是函数里,除非用local显式声明为局部变量。局部变量的作用域为从声明位置开始到所在语句块结束。
Lua可以对多个变量同时赋值,变量列表和值列表的各个元素用逗号分开,赋值语句右边的值会依次赋给左边的变量。
例:a,b = 10,2*x <---> a=10;b=2*x
遇到赋值语句Lua会先计算右边所有的值,然后再执行赋值操作,所以我们可以这样进行交换变量的值。
例:x,y=y,x ----- swap "x" for "y"
a[i],a[j] = a[j],a[i] ------ swap"a[i]" for "a[j]"
当变量个数和值的个数不一致时,Lua会一直以变量个数为基础采取以下策略:
a.变量个数>值的个数
按变量的个数补足nil
b.变量个数<值的个数
多余的值会被忽略
应尽可能的使用局部变量,有2个好处:
1.避免命名冲突
2.访问局部变量的速度比全局变量更快
索引
对于table的索引使用方括号[ ],Lua也提供了“ . ”操作
t[i];
t.i-----当索引为字符串类型时的一种简化量
getable_event(t,i)-----采用索引访问本质上是一个类似这样的函数调用。