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的增强版)
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 总是等价。