我有一个由多行组成的表,每行都有可变数量的列。
如果我想在新行中添加数据,我只需要
table[#table+1] = {['d1'] = data, ['d2'] = data, ... }
现在我想做的是,如果我想添加到第1行(例如):
table[1] = {['d' .. #columns+1] = data}
除了不起作用,我找不到解决方案。
我现在的问题是,当我的代码将数据添加到现有行时,它会覆盖现有数据,这不是我想要的。
例如,这是表格中一行的结果:
- 表:{4} {[“d3”] = 154.04,},
而不是'd1','d2'和最后'd3'我只是'd3'。
答案 0 :(得分:1)
代码
table[1] = {['d' .. #columns] = data}
将table[1]
的值替换为右侧的表格
请改为尝试:
table[1]['d' .. #columns] = data
答案 1 :(得分:0)
对于那些可能有同样问题的人,这是我最接近的答案:
#
运算符仅计算整数键。所以#
不会计算包含字符串键的任何表,例如table [p1],这是我的问题。
我使用以下函数解决了它:
function tlength(T)
local count = 0
for _ in pairs(T) do count = count + 1 end
return count
end
现在我可以计算列/子列中的任意数量的项目并添加到其中。
我使用数字索引的问题是它使代码不可读,我不知道是什么。有了这个,我仍然可以使用字符串索引并计算它们。这是一种权衡。还有一个函数或#运算符。
干杯