根据非数值表的值创建数值表

时间:2014-04-27 22:59:52

标签: lua lua-table

Backpack = {Potion = 'backpack',Stack = 'bag',Loot = 'derp', Gold = 'random'}

Backpack[1] ~= 'backpack' -- nope

你们可以看到,我不能打电话给Backpack [1],因为它不是数字表,在构建背包后如何生成一张桌子,仅包含它的价值?例如:

Table_to_be_Constructed = {Value of Potion,Value of Stack,Value of Loot,Value of Gold} -- this is what i need

看起来很简单,但我找不到办法。

我需要这样,因为我将在Table_to_be_Constructed [i]上运行数字循环

1 个答案:

答案 0 :(得分:1)

要迭代表中的所有键值对,请使用pairs函数:

local Table_to_be_Constructed = {}
for key, value in pairs(Backpack) do
    table.insert(Table_to_be_Constructed, value)
end

注意:未定义迭代顺序。因此,您可能希望事后对Table_to_be_Constructed进行排序。

按照惯例,变量名_用于表示不会使用其值的变量。因此,既然您只想要表中的值,那么您可以这样编写循环:

for _, value in pairs(Backpack) do

更新问题

Backpack没有顺序(构造函数语句中的顺序不会保留。)如果要在构造Table_to_be_Constructed时向其值添加顺序,可以直接执行此操作:< / p>

local Table_to_be_Constructed = {
    Backpack.Potion, 
    Backpack.Stack, 
    Backpack.Loot, 
    Backpack.Gold
}

或间接地这样:

local items = { 'Potion', 'Stack', 'Loot', 'Gold' }
local Table_to_be_Constructed = {}
for i=1, #items do
    Table_to_be_Constructed[i] = Backpack[items[i]]    
end