【发布时间】:2014-12-27 14:21:08
【问题描述】:
过去我发现自己使用表作为索引和值 当订单无关紧要时的表格。 由于每个表都返回一个唯一值,因此它们被保存为 索引,我已经得到了我想要的所有信息 稍后在程序中使用。现在我没有看到任何类似的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 类型?
编辑:
这是否适合使用弱表?
注意:
标准二维表:table[key1] = table
table[key1][key2]
这个版本:table[table] = 除了 nil
key1[key2]
【问题讨论】:
-
我不明白你的最后一句话。
-
@lhf t[v] 我初始化为 0 只需要,因为 nil 表示该表不存在。因此,如果要变大,使用使用尽可能少内存的值将节省相当多的内存。
-
0 尽可能少;
false也是如此。 -
@CHlM3RA:如果您担心内存问题:使用小的正整数键(如
tab)可能会比您的方法(t)消耗更少的内存,因为 Lua 实现了针对未显式存储键的类数组表。 -
@lhf 和 siffiejoe:谢谢你回答了我很高兴知道的部分问题