如何从Lua表中获取值

4
我有个带多个值的表格,我想打印每个值。
要像这样:
'值_1' '值_2'等等...
 table = {
        {'value_1'},
        {'value_2'},
        {'value_3'},
        {'value_4'},
    }

我尝试使用for k, v,但失败了:
for k, v in pairs(table) do
    print(v)
end
3个回答

7
你的表格值本身就是表格。因此,请尝试使用以下代码:
for k, v in pairs(table) do
    print(v[1])
end

或者创建一个简单的表格,使用您原来的代码:

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

1

我不确定你的示例代码是否是生产代码,但是你可以进行一些小的优化:

-将表格设为局部变量(例如):local table = {}; -删除不必要的表格(例如):{'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;来定义一个本地变量(它们更快)。


1
你好,这是我的最终代码:https://pastebin.com/avmyfpF5,所以我需要改变k,v以使其更加优化吗?我的本地表格只加载一次到内存中,但循环执行多次。 - whiteblXK

0

当您使用多维数组时,可能会涉及到子表。您可以像下面这样索引子表。

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   

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接