Lua 中的 table 类型是一个 “关联数组”,数组的索引可以是数字或者是字符串,所有索引值都需要用 “[” 和 “]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有 [] 括起,则认为是字符串索引。
-- 初始化表 mytable = {} -- 指定值 mytable[1]= "Lua" -- 移除引用 mytable = nil -- lua 垃圾回收会释放内存
参数
参数 描述 mytable 变量名。 说明
构造器是创建和初始化表的表达式,表是 Lua 特有的功能强大的东西,最简单的构造函数是 {},用来创建一个空表,可以直接初始化数组。
案例
创建空表
使用
{}
创建空表#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") mytable = {} print("mytable =", mytable, "type mytable =", type(mytable))
程序运行后,控制台输出如下:
我们定义了一个变量 mytable,并且赋值为
{}
, 并同时输出它的类型,我们发现,它的类型都是 table 类型,并且,如果直接输出 table 变量名,那么输出了其地址。table赋值
table 的索引从 1 开始
#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") mytable = {} mytable[1] = "Lua" print("mytable[1] =", mytable[1]) mytable["name"] = "haicoder" print("mytable[name] =", mytable["name"])
程序运行后,控制台输出如下:
这里我们一定要注意,table 的数字索引从 1 开始,同时,table 也可以使用字符串索引。
修改table值
直接给对应的索引赋值即可修改 table 的值
#!/usr/bin/lua print("haicoder(www.haicoder.net)\n") mytable = {} mytable["name"] = "haicoder" print("before mytable[name] =", mytable["name"]) mytable["name"] = "HaiCoder" print("after mytable[name] =", mytable["name"])
程序运行后,控制台输出如下:
我们可以看到,如果索引不存在,那么会直接向 table 中插入一个元素,如果索引存在,那么会修改对应索引的值。
Lua table总结
Lua 中的 table 类型是一个 “关联数组”,数组的索引可以是数字或者是字符串,所有索引值都需要用 “[” 和 “]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有 [] 括起,则认为是字符串索引。