Lua:’对’不会迭代[1]

我很快就调试了一些东西,并编写了以下函数

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??",[3.2]="else"}})

输出

132:    something
3.2:    else
one:    hello??
2:  two

这是如此不直观,我几乎觉得自己是个白痴,没有看到错误..

(顺便说一句.我知道如果表包含一个递归引用,我的函数将溢出堆栈,稍后将修复它)

解决方法

问题是内表.你没有给它一个键,这意味着Lua会给它一个数组索引.即,1.哪个将覆盖您用于“hello ??”的[1]键.因此,您需要为此表值提供正确的密钥,或者您需要停止对其他密钥使用整数键.

或者,换句话说,以下两个表是相同的:

{"first","second","third"}

{[3] = "third",[2] = "second","first"} --Note the lack of a key for "first".

相关文章

1.github代码实践源代码是lua脚本语言,下载th之后运行thmai...
此文为搬运帖,原帖地址https://www.cnblogs.com/zwywilliam/...
Rime输入法通过定义lua文件,可以实现获取当前时间日期的功能...
localfunctiongenerate_action(params)localscale_action=cc...
2022年1月11日13:57:45 官方:https://opm.openresty.org/官...
在Lua中的table(表),就像c#中的HashMap(哈希表),key和...