无法弄清楚这个表的安排

时间:2016-05-15 20:19:54

标签: lua roblox

--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

3 个答案:

答案 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表是哈希表,并且根本没有指定其中的字段顺序。它将在运行之间发生变化,您无法按照它们填充的顺序进行迭代。
只有具有连续整数索引的数组才能保持其元素的顺序。