最近重新拾起了lua,发现语法几乎忘光了,记录一下这俩的遍历的区别。话不多说,上代码
local list = {
["a"] = "cc",
["d"] = "ee",
}
print("pairs")
for k,v in pairs(list) do
print(k,'-----',v)
end
print("ipairs")
for k,v in ipairs(list) do
print(k,'-----',v)
end
输出为
![](https://img.haomeiwen.com/i9311598/44a2d0931e37c536.png)
从上图可以看出,ipairs不能遍历key为字母的map
修改一下代码
local list = {
"a",
[4] = "cc",
[3] = "ee",
"d"
}
print("pairs")
for k,v in pairs(list) do
print(k,'-----',v)
end
print("ipairs")
for k,v in ipairs(list) do
print(k,'-----',v)
end
输出如下
![](https://img.haomeiwen.com/i9311598/66684aa9250844a0.png)
通过上述实验可以看出,ipairs只能遍历数字键的map,且重新排序按循序输出,但pairs可以遍历key为字符和数字的map,但不会对key为数字的重新排序,只会当做普通的字符串的key无序输出
网友评论