Lua:遍历表中的所有键值对

18

我有一个稀疏的 Lua 表需要遍历。问题是,似乎 Lua 从索引 1 开始迭代,并在找到 nil 值后立即终止迭代。以下是一个示例:

> tab={}
> tab[2]='b'
> tab[5]='e'
> for i,v in ipairs(tab) do print(i,v) end
>               --nothing is output here
> tab[1]='a'
> for i,v in ipairs(tab) do print(i,v) end
1   a
2   b
>               --terminates after 2 (first nil value is tab[3])

有没有办法获得期望的输出:

1   a
2   b
5   e
1个回答

35

你必须使用pairs而不是ipairs

tab={}

tab[1]='a'
tab[2]='b'
tab[5]='e'

for k, v in pairs(tab) do print(k, v) end

将输出(无特定顺序):

1   a
2   b
5   e

ipairs函数循环遍历从1开始的连续整数键,直到第一个nil值出现时停止。

pairs函数循环遍历表中的所有键值对。请注意,这种遍历不保证按特定顺序进行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接