Lua 在索引中存储二维数组的第二个表的潜在问题

Lua 在索引中存储二维数组的第二个表的潜在问题,lua,lua-table,Lua,Lua Table,在过去,我发现自己使用一个表作为 与订单无关的桌子。 因为每个表都返回一个唯一的值,所以它们被保存为 索引,我已经得到了我想要的所有信息 稍后在程序中使用。现在我没有看到任何类似的lua代码 jet,没有在非测试程序中使用它。所以我担心我 使用此方法时可能会遇到一些未预料到的/意外的问题 例如: a = {1,2,3,4,5} --some testing values b = {2,nil,4,nil,1} c = {3,nil,nil,nil,

在过去,我发现自己使用一个表作为 与订单无关的桌子。 因为每个表都返回一个唯一的值,所以它们被保存为 索引,我已经得到了我想要的所有信息 稍后在程序中使用。现在我没有看到任何类似的lua代码 jet,没有在非测试程序中使用它。所以我担心我 使用此方法时可能会遇到一些未预料到的/意外的问题

例如:

a = {1,2,3,4,5}                         --some testing values
b = {2,nil,4,nil,1}
c = {3,nil,nil,nil,2}
d = {4,nil,1,nil,3}
e = {5,1,2,3,4}

tab = {a,b,c,d,e}
t = {}

for i, v in pairs(tab) do
    t[v] = 0
end

for iv in pairs(t) do                   --is almost every time outputting it in a different order
    print(iv[1],iv[2],iv[3],iv[4],iv[5])        --could be a list of data where you have to go through all of it anyway
end

io.read()
现在我可以在t[v]中存储一些附加信息,但如果我没有 有没有比lua更小的

编辑:

这是否与弱表的使用相匹配

注:

标准2d表格:表格[key1]=表格


表[key1][key2]可以将一个表用作另一个表中的键


但是,请注意,不同的表将是不同的键,即使其中的表具有相同的内容。

我不理解您的最后一句话。@lhf t[v]我将其初始化为0,因为nil表示该表不存在。因此,使用一个使用尽可能小的内存量的值将节省相当多的内存,如果这个值要变大的话;
false
@CHlM3RA也是如此:如果您关心内存:使用小的正整数键(如
tab
)可能会比您的方法消耗更少的内存(
t
),因为Lua实现了对类数组表的优化,这些表中的键没有显式存储。@lhf和siffiejoe:谢谢,这回答了我问题中的“好知道”部分。在正常情况下是的,但周表可能会混淆,我必须在接下来的几天查看它们。我想有一些关于键和索引的东西。