迭代表

Lua 标准库提供了 pairs 函数,它迭代表的键和值。当使用 pairs 进行迭代时,即使表的键是数字没有指定的遍历顺序。

for key, value in pairs(input_table) do
    print(key, " -- ", value)
end

对于使用数字键的表,Lua 提供了 ipairs 功能。ipairs 函数将始终从 table[1]table[2] 等迭代,直到找到第一个 nil 值。

for index, value in ipairs(numeric_table) do
    print(index, ". ", value)
end

请注意,使用 ipairs() 进行迭代将无法在以下几种情况下运行:

  • input_table 里面有。 (有关详细信息,请参阅避免用作数组的表中的间隙一节。)例如:

    table_with_holes = {[1] = "value_1", [3] = "value_3"}
    
  • 键不是全部数字。例如:

    mixed_table = {[1] = "value_1", ["not_numeric_index"] = "value_2"}
    

当然,以下内容也适用于正确序列的表:

for i = 1, #numeric_table do
    print(i, ". ", numeric_table[i])
end

以相反的顺序迭代数字表很容易:

for i = #numeric_table, 1, -1 do
    print(i, ". ", numeric_table[i])
end

迭代表的最后一种方法是在通用的 for 循环中使用 next 选择器。像 pairs 一样,没有指定的遍历顺序。 (pairs 方法在内部使用 next。所以使用 next 本质上是一个更为手动的 pairs 版本。有关详细信息,请参阅 Lua 参考手册中的 pairsLua 参考手册中的 next 。)

for key, value in next, input_table do
    print(key, value)
end