【问题标题】:Lua: Way to create tables automatically?Lua:自动创建表的方法?
【发布时间】:2013-09-27 03:37:47
【问题描述】:

我正在尝试将数据库数据类别的数据值加载到表中以进行进一步处理。每个数据类别都应该有自己的表。不幸的是,数据类别的数量并不一致,并且因数据库而异,因此我考虑根据当前数据类别的数量自动创建表:

--categories is a table containing the names of all data categories
for a = 1, #categories, 1 do 
temptable..a = {}; 
end

这当然行不通,因为 Lua 试图将表分配给变量而不是其值。以这种方式也无法进行变量连接。有没有办法让 Lua 自动创建表?

【问题讨论】:

    标签: lua creation lua-table


    【解决方案1】:

    记住在 Lua 中表可以包含表,所以为什么不简单地这样做

    例如

    cat = {'cat1','cat2','cat3'}
    
    temptable = {}
    for i,v in pairs(cat) do
    temptable[v] = {1+ i,2 + i,3 + i}
    end
    

    会给你一个包含 很诱人

    [cat2] => table
        (
           [1] => 3
           [2] => 4
           [3] => 5
        )
    [cat1] => table
        (
           [1] => 2
           [2] => 3
           [3] => 4
        )
    [cat3] => table
        (
           [1] => 4
           [2] => 5
           [3] => 6
        )
    

    可以使用

    for i,v in pairs(temptable.cat1) do
    print(i,v)
    end
    

    【讨论】:

    • 我没想到!谢谢你:)
    • 记住全局环境是_G,所以你可以使用_G[v]而不是temptable[v],它们会显示为全局变量而不是temptable的成员。跨度>
    猜你喜欢
    • 2020-12-03
    • 2016-07-08
    • 1970-01-01
    • 1970-01-01
    • 2014-06-18
    • 2014-09-30
    • 1970-01-01
    • 2013-06-01
    • 2011-10-07
    相关资源
    最近更新 更多