Lua 中pairs 与 ipairs 的区别

发布时间 2023-11-22 10:34:40作者: 悉野

在 Lua 中,pairs 和 ipairs 是用于遍历集合(如数组或表)的两种不同的迭代器函数。

pairs 函数用于遍历表(table)的所有键值对。它返回一个迭代器对象,该对象可以用于依次获取表的每个键值对。可以使用 next 方法来获取下一个键值对。示例如下:

lua
t = { "a", "b", "c" }
for key, value in pairs(t) do
print(key, value)
end
输出结果:

1 a
2 b
3 c
ipairs 函数用于遍历数组(即索引从1开始的值序列)。它返回一个迭代器对象,该对象可以用于依次获取数组的每个元素。与 pairs 不同的是,ipairs 只能遍历数组的索引从1开始的连续元素,不能遍历表中的键值对。可以使用 ipairs 返回的迭代器对象的 __ipairs 方法获取下一个元素。示例如下:

lua
t = { "a", "b", "c" }
for i, value in ipairs(t) do
print(i, value)
end
输出结果:

1 a
2 b
3 c
总结:

pairs 用于遍历表的所有键值对,可以遍历非连续的键和值。
ipairs 用于遍历数组的连续元素,只能遍历索引从1开始的连续值。