初学者Lua quesiton我正在学习lua,我写了一些代码,一个嵌套表,用来创建类似于包含行和列的表。
但是,当我使用pairs()迭代表时,它的输出顺序与我放置它的顺序不同。我把它放在Serial,Service Days,Connected中,它的结果是Service Days,Serial,Connected。我不知所措,不知道为什么。我故意以不同的方式创建了这三行,因为我只是在学习并尝试适应处理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,发布于 2017-07-18 00:16:14
pairs使用next函数。因此,使用配对迭代器的通用for循环中的遍历顺序是未指定的。
来自Lua参考手册:
https://www.lua.org/manual/5.3/manual.html#pdf-next
未指定枚举索引的顺序,即使对于数字索引也是如此。(要按数字顺序遍历表,请使用数字for。)
如果在遍历过程中,将任何值赋给表中不存在的字段,则next的行为未定义。但是,您可以修改现有字段。特别是,您可以清除现有字段。
如果你这样做:
myTable[2] = {}
myTable[2]["Serial"] = "2SHA"
myTable[2]["ServDays"] = 3
myTable[2]["Connected"] = trueLua不会记住您为表键赋值的顺序。它只会将键映射到值。
https://stackoverflow.com/questions/45148788
复制相似问题