迭代表
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 参考手册中的 pairs
和 Lua 参考手册中的 next
。)
for key, value in next, input_table do
print(key, value)
end