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


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

虽然两者有一些相似之处,但了解它们之间一些显著的区别也很重要。

**pairs()** 和 **ipairs()** 函数之间的第一个区别是,**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

更新于: 2021-07-19

10K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告