无法确定表格排列方式

--表格视图
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 = {}

--排列方式
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
点赞
用户5675002
用户5675002

不要指望使用 pairs() 来以特定顺序迭代表格字段。在 Lua 内部,表格是哈希表,其中字段的顺序根本没有指定。它们将在运行之间更改,你不能让它们以填充顺序相同的顺序迭代。

只有具有连续整数索引的数组将保持其元素的顺序。

2016-05-15 22:37:48
用户5655089
用户5655089

以下是一种在不显示重复或表格引用值的情况下打印所有元素的方法。

正如其名称所示,此函数将打印表格中的所有元素,无论其中有多少嵌套表格。目前我没有一种方法来对它们进行排序,但如果我找到一种方法,我会更新我的答案。您也可以摆脱打印行中的空白空间,我只是用它让它看起来更整洁。如果它有效,请告诉我。

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

-- 在参数中放置您表格的名称以使用此功能
allElementsInTable(originalStats)
2016-05-16 01:25:28
用户6163994
用户6163994
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()

经过更多试验,我得到了这个,如果有人需要的话,请随意使用。

2016-05-17 15:07:05