在for循环中,使用pairs()和ipairs()循环有什么区别?此页面同时使用:Lua Docs
使用ipairs():
a = {"one", "two", "three"}
for i, v in ipairs(a) do
print(i, v)
end
结果:
1 one
2 two
3 three
使用pairs():
a = {"one", "two", "three"}
for i, v in pairs(a) do
print(i, v)
end
结果:
1 one
2 two
3 three
您可以在此处进行测试:Lua Demo
最佳答案
pairs()
和ipairs()
略有不同。
pairs()
返回键值对,并且主要用于关联表。密钥顺序未指定。 ipairs()
返回索引值对,并且主要用于数字表。数组中的非数字键将被忽略,而索引顺序是确定性的(按数字顺序)。 下面的代码片段对此进行了说明。
> u={}
> u[1]="a"
> u[3]="b"
> u[2]="c"
> u[4]="d"
> u["hello"]="world"
> for key,value in ipairs(u) do print(key,value) end
1 a
2 c
3 b
4 d
> for key,value in pairs(u) do print(key,value) end
1 a
hello world
3 b
2 c
4 d
>
当创建没有键的表时(如您的问题所示),它的行为就像一个数字数组,并且行为或成对和ipair是相同的。
a = {"one", "two", "three"}
等效于
a[1]="one"
a[2]="two"
a[3]="three"
和pairs()
和ipairs()
将相同(除了pairs()
中不能保证的顺序)。关于for-loop - Lua中的pairs()和ipairs()有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55108794/