Lua 中的pairs() 和ipairs() 有什么区别?

在 Lua 中,当我们想用 for 循环遍历给定的表时,我们同时使用 thepairs()ipairs()函数。这两个函数都返回键值对,其中键是元素的索引,值是存储在该索引表中的元素。

虽然它们都有一些相似之处,但也很高兴知道它们有一些我们应该注意的非常显着的差异。

pairs()andipairs()函数之间的第一个区别是pairs()函数不维护键顺序,而ipairs()函数肯定会。

示例

考虑下面显示的例子 -

u={}
u[1]="a"
u[3]="b"
u[2]="c"
u[4]="d"
u["aa"] = "zz"
u[7] = "e"
for key,value in ipairs(u) do print(key,value) end
print(“---”)
for key,value in pairs(u) do print(key,value) end

在上面的例子中,ipairs()函数将按数字顺序打印键的顺序,而pairs()函数不保证它。

此外,如果我们更仔细地查看示例,我们将看到第二个区别,即该ipairs()函数不返回表中存在的非数字键。

输出结果

考虑参考输出。

1   a
2   c
3   b
4   d
---
1   a
2   c
3   b
4   d
7   e
aa zz