--The view of the table
local originalStats = {
Info = {Visit = false, Name = "None", Characters = 1},
Stats = {Levels = 0, XP = 0, XP2 = 75, Silver = 95},
Inventory = {
Hats = {"NoobHat"},
Robes = {"NoobRobe"},
Boots = {"NoobBoot"},
Weapons = {"NoobSword"}
}
}
local tempData = {}
--The arrangement here
function Module:ReadAll(player)
for k,v in pairs(tempData[player]) do
if type(v) == 'table' then
for k2, v2 in pairs(v) do
print(k2) print(v2)
if type(v2) == 'table' then
for k3, v3 in pairs(v2) do
print(k3) print(v3)
end
else
print(k2) print(v2)
end
end
else
print(k) print(v)
end
end
end
对不起,但我似乎无法弄清楚如何安排这个' ReadAll'功能到哪里它会以正确的顺序显示所有正确的统计数据。 输出是这样的:
Boots
table: 1A73CF10
1
NoobBoot
Weapons
table: 1A7427F0
1
NoobSword
Robes
table: 1A743D50
1
NoobRobe
Hats
table: 1A73C9D0
1
NoobHat
XP2
75
XP2
75
Levels
2
Levels
2
XP
0
XP
0
答案 0 :(得分:1)
这是一种打印所有元素的方法,不会显示双引号或表引用值。 正如名称所述,此函数将打印表中的所有元素,无论其中有多少嵌套表。我目前没有办法订购它们,但如果我找到方法,我会更新我的答案。你也可以摆脱印刷线上的空白空间,我只是用它,所以它看起来更整洁。如果有效,请告诉我。
function allElementsInTable(table)
for k,v in pairs(table) do
if type(table[k]) == 'table' then
print(k .. ":")
allElementsInTable(v)
else
print(" " .. k .. " = " .. tostring(v))
end
end
end
--place the name of your table in the parameter for this function
allElementsInTable(originalStats)
答案 1 :(得分:1)
经过更多的实验,我得到了这个,如果有人想要它,请随意使用它。
tempData = { Info = {Visit = false, Name = 'None'},
Stats = {LVL = 0, XP = 0, Silver = 75},
Inventory = { Armors = {'BasicArmor'},
Weapons = {'BasicSword'} }
}
function Read()
for i, v in pairs(tempData['Info']) do
print(i..'\t',v)
end
----------
for i2, v2 in pairs(tempData['Stats']) do
print(i2..'\t',v2)
end
----------
for i3, v3 in pairs(tempData['Inventory']) do
print(i3..':')
for i4, v4 in pairs(v3) do
print('\t',v4)
end
end
end
Read()
答案 2 :(得分:0)
不要期望表格的字段以某个特定顺序与pairs()
进行迭代。内部Lua表是哈希表,并且根本没有指定其中的字段顺序。它将在运行之间发生变化,您无法按照它们填充的顺序进行迭代。
只有具有连续整数索引的数组才能保持其元素的顺序。