Lua 中 pairs 和 ipairs 都是用来遍历 table 中的键值对的函数。它们的主要区别在于遍历时的顺序和范围。
pairs 函数
pairs 函数遍历 table 中所有的 key-value 对,遍历的顺序是无序的。pairs 返回两个值:键和与键对应的值。示例代码如下:
local t = {name = "Tom", age = 18, sex = "male"}
for k, v in pairs(t) do
print(k, v)
end
输出结果为:
name Tom
age 18
sex male
ipairs 函数
ipairs 函数只遍历 table 的数组部分,即 index 从 1 开始的连续数字下标。ipairs 返回三个值:index、与该 index 对应的值、与该 index 对应的键(即 index)。示例代码如下:
local t = {"apple", "banana", "orange"}
for i, v in ipairs(t) do
print(i, v)
end
输出结果为:
1 apple
2 banana
3 orange
区别比较
可以看出,pairs 函数遍历 table 时是无序的,可以得到 table 中所有键值对,比较灵活。而 ipairs 函数只能遍历数组部分(即 index 为数字的部分),但是会按照下标顺序遍历,具有一定的有序性。因此在实际开发中根据具体场景和需求选择适合的函数。
另外,需要注意的是,pairs 和 ipairs 的内部实现机制是不同的,ipairs 函数是通过迭代器来实现的,而 pairs 函数是调用 table 中的 next 函数来实现的。虽然两者的效果类似,但是在性能上会有所区别。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Lua 中 pairs 和 ipairs 的区别 - Python技术站