私はすぐに何かをデバッグする必要があり、次の関数を書きました:
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
これは非常に直感的ではなく、間違いに気付かない自分を馬鹿にしたい..
(ところで、テーブルに再帰参照が含まれている場合、関数がスタックをオーバーフローすることはわかっています。後で修正します)