我很快就要调试一些东西,并编写了以下函数:
function dumpTable(t)
for i,v in pairs(t) do
if type(v) == "table" then
dumpTable(v)
else
print(i..":", v)
end
end
end
现在,出于某种原因
dumpTable({[1]="hello??", [2]="two", {[132]="something", [3.2]="else"}})
输出
132: something
3.2: else
2: two
注意第一个字符串是怎么丢失的?但是,如果我改变它的关键..
dumpTable({["one"]="hello??", [2]="two", {[132]="something", [3.2]="else"}})
输出
132: something
3.2: else
one: hello??
2: two
这是如此不直观,我几乎觉得自己是个白痴,没有看到错误......
(顺便说一句。我知道如果表包含递归引用,我的函数将溢出堆栈,稍后将修复它)
答案 0 :(得分:10)
问题在于内表。你没有给它一个键,这意味着Lua会给它一个数组索引。即, 1
。这将覆盖您用于[1]
的{{1}}密钥。因此,您需要为此表值提供正确的密钥,或者您需要停止对其他密钥使用整数密钥。
或者,换句话说,以下两个表是相同的:
"hello??"