【问题标题】:Potential problems with storing the second table of two dimensional arrays in the index在索引中存储第二个二维数组表的潜在问题
【发布时间】: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:谢谢你回答了我很高兴知道的部分问题

标签: lua lua-table


【解决方案1】:

可以将一个表用作另一个表的键。

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

【讨论】:

  • 在正常情况下是的,但是周表可能会混淆,我必须在接下来的几天里查看它们。我认为键和索引有些东西。
猜你喜欢
  • 1970-01-01
  • 2020-07-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-03
  • 1970-01-01
  • 2023-03-27
相关资源
最近更新 更多