强大的 table 表
table 是一个"关联数组"。
在 Lua 中可以用任意类型的值来作为数组的索引,但是这个值不能是 nil,同样也可以
用任意类型的值作为数组的value,nil也可以。
1、数组的索引可以是数字或者是字符串,所有索引值都需要用 "["和"]" 括起来;
如果是字符串还可以去掉引号和中括号;但是数字下标不可以。**注意**
2、table 所有元素之间用逗号 "," 隔开;
3、table 的默认初始索引以 1 开始,如果不写索引,则索引就会被认为是数字,
并按顺序自动从 1 往后编。
4、table 长度是不固定的,有新数据插入时会自动增长。
5、table 可以保存任何类型数据,包括nil、函数、table。
6、table 的变量只是一个地址引用, 对 table 的操作不会产生数据影响。
上代码:
--table 的值有两种存储方式:1、数组方式、 2、键值对方式
tab1 = {
key1 = "12",
["key2"] = 21,
[12] = "tab1索引12",
tab2 = {key1 = "value1",[12] = "tab2索引12"},
keyFunction = function() print("函数") end
31
}
print(tab1.key1)---------------12
print(tab1.key2)---------------21
print(tab1[12])----------------tab1索引12
print(tab1.tab2.key1)----------value1
print(tab1.tab2[12])-----------tab2索引12
tab1.keyFunction()-------------函数
tab1["keyFunction"]()----------函数
print(tab1[1])-----------------31
获取 table表 值:
— 如果下标不是数字, 可以使用 table.key 的形式访问,也可以 table[“key”] 形式访问
— 如果下标是数字, 只能使用 table[索引值]形式进行访问、
— lua 中 如果不指定 table 索引默认索引从 1 开始,在 tab1 中 13 没有显式对应的 key,
而在前面都定义了对应的key,因此索引从1开始
— 不管定义索引时用的是常量还是变量, 最终 table 中 value 的索引 key 是常量,
不会随变量的改变而变化 value 的 key。
遍历 table
迭代器遍历 table:
1、
for k,v in ipairs(表名) do
print(k,v)
end
ipairs 方法,遍历数组结构
pairs 方法,遍历键值对结构
tab1 = {2,23,12,3,21,23}
for k,v in ipairs(tab1) do
print(k,v)
end
--运行结果:
1 2
2 23
3 12
4 3
5 21
6 23
tab1 = {key1 = "value1", key2 = "value2", key3 = "value3"}
for k,v in pairs(tab1) do
print(k,v)
end
--运行结果:
key1 value1
key3 value3
key2 value2