从非数字表格中的数值创建一个数字表格。

背包 = { 药水 = '背包', 堆 = '包', 战利品 = 'derp', 金币 = '随机'}

背包[1] ~= '背包' -- 不行

正如你们可以看到的,我不能调用 Backpack[1],因为它不是数字表,那么我怎样才能在创建 Backpack 后生成一个只由其值组成的表呢?例如:

Table_to_be_Constructed = { 药水的值, 堆的值, 战利品的值, 金币的值 } -- 这就是我需要的

这似乎很简单,但我找不到办法。

我需要这种方式是因为我将在 Table_to_be_Constructed[i] 上运行数字循环。

点赞
用户2226988
用户2226988

要迭代表中的所有键值对, 可以使用 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 时给其值添加顺序, 您可以直接这样做:

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
2014-04-28 00:32:35