【问题标题】:lua: iterate through all pairs in tablelua:遍历表中的所有对
【发布时间】:2012-09-17 01:08:44
【问题描述】:

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

【问题讨论】:

    标签: loops lua lua-table


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 2011-09-02
      • 2018-03-04
      • 2013-06-30
      • 2018-11-21
      • 1970-01-01
      • 2019-02-26
      • 2010-11-29
      • 2021-08-25
      相关资源
      最近更新 更多