在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/

    10-12 01:36