如何从 Lua 中的 table 获取值

How to get value from the table in Lua

我有 table 多个值,我想打印每个值。

要像:

'value_1' 'value_2' etc..

 table = {
        {'value_1'},
        {'value_2'},
        {'value_3'},
        {'value_4'},
    }

我试过 for k, v 但失败了:

for k, v in pairs(table) do
    print(v)
end

您 table 的值是 table 本身。所以试试这个:

for k, v in pairs(table) do
    print(v[1])
end

或者创建一个更简单的 table 并使用您的原始代码:

table = {
    'value_1',
    'value_2',
    'value_3',
    'value_4',
}

我不确定您的示例是否是生产代码,但您可以进行一些优化(虽然很小):

-使 table 成为局部变量(即:local table = {}; -删除不必要的 tables (即): {'value1'}; >> 'value1'; - 将 k,v 循环更改为通用的 for 循环(我相信这样会更有效率?)。

最终代码(如我所说):

local Table = {
    "value_1";
    "value_2";
    "value_3";
    "value_4";
};

for Key = 1, #Table, 1 do
    print(Table[Key]);
end;

如有任何问题,请随时提出。哦,如果你计划多次使用 运行 这段代码,请考虑将 local print = print; 放在你的代码之上以定义一个局部变量(它们更快)。

当您有子 table 时,您正在使用多维数组。您可以像下面这样索引子 table。

local tab = {
    {1, 2, 3},
    {4, 5, 6},
    {7, 8, 9}
}

for i, v in next, tab do
    print(i, v)
    for n, k in next, v do
        print(">", n, k)
    end
end

-- 1    table: 000001
-- > 1  1
-- > 2  2
-- > 3  3
-- 2    table: 000002
-- > 1  4
-- > 2  5
-- > 3  6
-- 3    table: 000003
-- > 1  7
-- > 2  8
-- > 3  9

要在没有 for 循环的情况下索引上面的 table,您可以使用 []。

print(tab[1][1]) --> 1
print(tab[1][2]) --> 2
print(tab[2][1]) --> 4
print(tab[2][2]) --> 5

不受数字索引的限制。您可以使用字符串和一种特殊的方式对其进行索引。

local tab = {
    x = 5,
    y = 10,
    [3] = 15
}

print(tab.x, tab["y"], tab[3]) --> 5   10   15