1.table 实例化
- Lua 中 table 的索引不是 0 开始,而是 1 开始
- table 访问的方式与数组的方式类似
-- table
-- 建立一个空的 table
mytable = {}
--建立一个有数据的 table
mytableData = {
sequenceDiagram
A->>B: How are you?
B->>A: Great!
1,
2,
3,
4
}
-- #mytableData 井号表示取长度
for i=1,#mytableData do
print(mytableData[i])
end
2.table 的遍历方式
table 是一个动态对象,也类似于程序指针,支持链表、键值对形式
2.1 第一种遍历方式-For 循环
-- table 例子
mTable = {
-- 索引
1,
k = "x",
j = "y",
4,
5
}
-- 第一种遍历方式
for i=1, #mTable do
print("value is " ..mTable[i])
end
运行结果
value is 1
value is 4
value is 5
[Finished in 0.1s]
2.2 第二种遍历方式-迭代器
-- table 例子
mTable = {
-- 索引
1,
k = "x",
j = "y",
4,
5
}
-- 第二种遍历方式-迭代器
for i,v in ipairs(mTable) do
print(i,v)
end
运行结果
1 1
2 4
3 5
[Finished in 0.1s]
2.3 第三种遍历方式-键值对方式
pairs 将所有的值显示出来
-- table 例子
mTable = {
-- 索引
1,
k = "x",
j = "y",
4,
5
}
-- 第三种遍历方式-键值对方式
for k,v in pairs(mTable) do
print(k,v)
end
运行结果
1 1
2 4
3 5
k x
j y
[Finished in 0.1s]
上述不是顺序索引
3.table 表示键值对
- a.x 等价于 a[“x”]
- a[x] 以变量 x 的值来索引 table
-- table 键值对
mTable = {
-- 索引
k = "x"
}
print(mTable["k"])
-- 很 C 语言
print(mTable.k)
--[[
a.x 等价于 a["x"]
a[x] 以变量 x 的值来索引 table
]]
s = "a"
mTable[s] = 10
print(mTable[s])