1. 注释
两个减号引导一行注释
-- this is comment-- 这是注释
2. 变量
无类型变量 变量名区分大小写 建议不要使用下划线后跟大写(如_LUAOCCUPIED)命名变量,此为LUA内部变量 不需要显式声明变量 未初始化的变量值为nil(注:nil不能参加数学运算) 允许多重赋值
例如 a,b,c = 1,2,3; 等同于 a=1;b=2;c=3; 若右值缺少:没有对应右值的左值被置为nil 若左值缺少:多余的右值被忽略
3. 数据类型
numeric 包括整型和浮点型 string 字符串 function 函数引用,类似C语言的函数指针 table 可以充当相关数组、链表、类 userdata 可以在LUA中保存C语言的 void* 类型 nil 空(NULL的增强版) 函数type()可以返回变量的类型名称。
table类型
初始化
IntArray = {10, 50, 100} StringArray = {"hello", "world", "!"}
初始化索引从1开始,上例中IntArray
1=10; StringArray
1="hello";
但是仍然可以手动赋值: IntArray
0=-100;
索引键
table的索引键只有在第一次被访问时才创建。
例如
IntArray[0] = 1; IntArray[5000] = 5000;
只有0和5000这两个键被创建。
表成员可以是异类数据
table每个索引对应的值可以是任何类型,甚至是另一个table的引用,例如
MyTable[0] = 100; MyTable[1] = 3.14; MyTable[2] = "string text"; MyTable[3] = {"a","b",1,2,3}; -- 这就相当于二维数组 -- MyTable[3][1]就是"a"
表存储的是引用
table的值只是对于一个数据的引用
a = {}; b = {}; a[10] = {1,2,3}; b[1] = a; b[1][10][2]= "changed"; -- b[1][10][2] 相当于 a[10][2] -- 所以此时a[10][2] = "changed"
用作关联数组
LUA中可以用字符串作为索引键,从而形成 KEY - VALUE 对
Person = {}; Person["name"] = "My Name"; Person["age"] = 24; print( Person["name"]); print( Person.age); --也可以通过点操作符访问成员
Table["key"] 与 Table.key 总是等价。