[LUA学习笔记04]Lua语法--数据类型

来源:互联网 发布:在河里炸鱼java游戏 编辑:程序博客网 时间:2024/05/16 14:49

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开始,上例中IntArray1=10; StringArray1="hello";
但是仍然可以手动赋值: IntArray0=-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 总是等价。 
原创粉丝点击