获取lua表中分配值的键

问题描述 投票:0回答:1

所以我试图制作一个游戏中所有生物的表格,每个生物都包含一个带有其统计数据的表格。我使用该生物的名称作为第一个表中的键,但现在我需要获取该名称,但我不确定如何/是否可以做到这一点?

local creatureArray = {["White Wyrm"]= {     

   ["dungeon"]= "Cavernam",    

   ["slayer"]= "Beastial",    

   ["difficulty"]= 100.8,    

   ["goldvalue"]= 1008,    

   ["hits"]= 4500,    

   ["mindmg"]= 45,    

   ["maxdmg"]= 55,    

   ["wrestling"]= 105,    

   ["armor"]= 50,    

   ["magicresist"]= 25,    

   ["ai"]= "Melee",    

   ["speed"]= "Medium",    

    ["uniquescaler"]= 1.35

},

}

在上面的示例中,当我迭代“creatureArray”中的此条目时,我需要获取“White Wyrm”值,还是子表分配给的键?我觉得答案一定非常简单,但我发现很难找到答案,因为我指的是表中的表,并且可能一开始就使用了错误的术语。

对于那些想知道这款游戏是《Ultima Online Outlands》的人,我与他们没有任何关系,我只是在开发一个 Lua 模块,希望能够集成到他们社区运行的 wiki 中。

我尝试只引用该表,因为我使用 for 循环来迭代所有生物:

for i, creature in pairs(creatureArray)
在这个例子中,我尝试只使用“creature”,但是它引用了表对象本身而不是键。

我知道我可以在每个生物下添加一个名为“名称”的值,但这似乎是多余的。

lua lua-table
1个回答
0
投票
for i, creature in pairs(creatureArray)

循环遍历表或字典时,它返回一个键/值对。

i
被视为键,
creature
被视为值。

这是一个例子:

local t = {
    ["Item"] = "Value",
    ["Another Item"] = "Another Value",
}

for i, value in pairs(t) do
    print(i, value)
end

输出将是:

Item            Value
Another Item    AnotherValue
© www.soinside.com 2019 - 2024. All rights reserved.