Lua中如何从表格中获取值

我有一个有多个值的表格,我想打印每一个值。

为了像这样:

'value_1' 'value_2' 等等..

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

我尝试用 for k,v 但失败了:

for k, v in pairs(table) do
    print(v)
end
点赞
用户107090
用户107090

你的表中的值本身又是表,请尝试这个代码:

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

或创建一个简单的表并使用原始代码:

table = {
    'value_1',
    'value_2',
    'value_3',
    'value_4',
}
2018-01-03 13:44:35
用户9170299
用户9170299

我不确定你的示例是否意味着要进行生产代码,但是你可以进行一些优化(尽管很小):

-将表格设置为局部变量(即):local table = {}; -删除不必要的表格(即):{'value1'}; >> 'value1'; -将k,v循环更改为通用循环(我认为这更有效率?)。

最终代码(我会这样写):

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

for Key, Value in ipairs(Table) do
    print(Value);
end;

如有任何问题,请随时提问。哦,还有,如果您计划多次运行此代码,请考虑在代码上方放置local print = print;以定义一个局部变量(它们更快)。

2018-01-03 23:01:15
用户2262111
用户2262111

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

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循环的情况下索引上面的表,可以使用[]。

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
2018-01-05 14:45:44