Lua表(table)

Lua table教程

Lua 中的 table 类型是一个 “关联数组”,数组的索引可以是数字或者是字符串,所有索引值都需要用 “[” 和 “]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有 [] 括起,则认为是字符串索引。

Lua table特性

  1. table 的默认初始索引一般以 1 开始,如果不写索引,则索引就会被认为是数字,并按顺序自动从 1 往后编。
  2. table 的变量只是一个地址引用,对 table 的操作不会产生数据影响。
  3. table 不会固定长度大小,有新数据插入时长度会自动增长。
  4. table 里保存数据可以是任何类型,包括 function 和 table。
  5. table 所有元素之间,总是用逗号 “,” 隔开。

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))

程序运行后,控制台输出如下:

12_Lua表table.png

我们定义了一个变量 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"])

程序运行后,控制台输出如下:

13_Lua表table.png

这里我们一定要注意,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"])

程序运行后,控制台输出如下:

14_Lua表table.png

我们可以看到,如果索引不存在,那么会直接向 table 中插入一个元素,如果索引存在,那么会修改对应索引的值。

Lua table总结

Lua 中的 table 类型是一个 “关联数组”,数组的索引可以是数字或者是字符串,所有索引值都需要用 “[” 和 “]” 括起来;如果是字符串,还可以去掉引号和中括号; 即如果没有 [] 括起,则认为是字符串索引。