Lua 迭代表

示例

Lua标准库提供pairs了对表的键和值进行迭代的功能。使用进行迭代时pairs,即使表的键是numeric没有指定的遍历顺序。

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

迭代表的最后一种方法是next在通用for循环中使用选择器。就像pairs没有特定的遍历顺序。(该pairs方法在next内部使用。因此使用next本质上是的更手动版本pairs。有关更多详细信息,请参见pairsLua的参考手册和nextLua的参考手册。)

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