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
广告