loops - lua:遍历表中的所有对

标签 loops lua lua-table

我有一个稀疏的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

最佳答案

您必须使用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遍历表中的所有键值对。请注意,这不能保证以特定顺序进行迭代。

关于loops - lua:遍历表中的所有对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12584258/

相关文章:

list - 从 IO Int 迭代列表创建,如何?

java - 如何从 double 数据类型值集中获取最大值?

linux - Conky 文件中 pre_exec 命令的 Lua "replacement"是什么?

mysql - 从Lua表向数据库(Mysql)插入数据

arrays - Lua:使用不同的大小写对字符串数组进行排序

python - 在 Python 的循环中添加项目

php - 在函数中循环或多次调用函数,哪个更快?

c++ - 嵌入:单声道与 lua

c++ - SDL SetRenderTarget 未设置目标

c++ - 如何将 C++ vector 分配给非表全局变量