Lua:’对’不会迭代[1]
发布时间:2020-12-14 21:48:49 所属栏目:大数据 来源:网络整理
导读:我很快就调试了一些东西,并编写了以下函数: function dumpTable(t) for i,v in pairs(t) do if type(v) == "table" then dumpTable(v) else print(i..":",v) end endend 现在,出于某种原因 dumpTable({[1]="hello??",[2]="two",{[132]="something",[3.2]="e
我很快就调试了一些东西,并编写了以下函数:
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". (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |