初学者Lua问题 - 我只是学习lua,我写了一些代码,一个嵌套的表来创建类似于行和列的表格。
但是,当我使用pairs()遍历表格时,它不会按照我输入的顺序输出。我将它放入串行,服务天数,连接状态,以及它作为服务日,串行,连接出来。我无法弄清楚原因。我有意创造了三排不同的方式,因为我只是在学习并试图熟悉处理Lua表的不同方法...
代码: myTable = {}
myTable["headerRow"] = {
Serial = "Serial",
ServDays = "Service Days",
Connected = "Connected" }
myTable[1] = {
Serial = "B9FX",
ServDays = 7,
Connected = true }
myTable[2] = {}
myTable[2]["Serial"] = "2SHA"
myTable[2]["ServDays"] = 3
myTable[2]["Connected"] = true
for k, v in pairs(myTable) do
for k2, v2 in pairs(v) do
io.write(tostring(v2),",")
end
io.write("\n") --End the row
end
结果:
c:\lua>lua53 primer.lua
7,B9FX,true,
3,2SHA,true,
Service Days,Serial,Connected,
答案 0 :(得分:3)
对使用下一个函数。因此,未指定使用对迭代器的泛型for循环中的遍历顺序。
来自Lua参考手册:
https://www.lua.org/manual/5.3/manual.html#pdf-next
甚至没有指定枚举索引的顺序 用于数字索引。 (要按数字顺序遍历表,请使用a 数字为。)
如果在遍历期间分配,则下一步的行为是未定义的 表中不存在的字段的任何值。但是你可以修改 现有领域。特别是,您可以清除现有字段。
如果您这样做:
myTable[2] = {}
myTable[2]["Serial"] = "2SHA"
myTable[2]["ServDays"] = 3
myTable[2]["Connected"] = true
Lua将不记得您将表格键的值赋予了哪个顺序。它只会将键映射到值。