‘对’为何不能成为[1]的迭代元素?

2026-04-01 20:311阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计435个文字,预计阅读时间需要2分钟。

‘对’为何不能成为[1]的迭代元素?

我迅速进行了测试,并编写了以下函数:`function dumpTable(t)`。它会遍历表格 `t` 中的每个元素,如果元素是表格,则递归调用自身;如果不是,则打印出索引和值。例如:

luafunction dumpTable(t) for i, v in pairs(t) do if type(v)==table then dumpTable(v) else print(i .. : .. tostring(v)) end endendend

-- 现在,对于某种原因,我们调用了 dumpTable({[1]=hello??, [2]=two})。

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

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

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

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

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

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

‘对’为何不能成为[1]的迭代元素?

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

本文共计435个文字,预计阅读时间需要2分钟。

‘对’为何不能成为[1]的迭代元素?

我迅速进行了测试,并编写了以下函数:`function dumpTable(t)`。它会遍历表格 `t` 中的每个元素,如果元素是表格,则递归调用自身;如果不是,则打印出索引和值。例如:

luafunction dumpTable(t) for i, v in pairs(t) do if type(v)==table then dumpTable(v) else print(i .. : .. tostring(v)) end endendend

-- 现在,对于某种原因,我们调用了 dumpTable({[1]=hello??, [2]=two})。

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

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

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

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

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

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

‘对’为何不能成为[1]的迭代元素?

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