这个订单有保证吗?

时间:2016-09-28 20:51:33

标签: lua

是这个脚本:

local data = 
{
  { "data1",    "1"},
  { "data5",    "2"},
  { "3453453",  "3"},
  { "zzz",      "4"},
  { "222",      "5"},
  { "lol",      "6"},
  { "asdf",     "7"},
  { "hello",    "8"},
}

local function test()
 local count = #data
  for i = 1, count do
    print(data[i][1] .. " = " .. data[i][2])
  end
end

test()

保证输出:

data1 = 1
data5 = 2
3453453 = 3
zzz = 4
222 = 5
lol = 6
asdf = 7
hello = 8

如果不是那么为什么,以及最佳的表现方式是什么呢?

1 个答案:

答案 0 :(得分:4)

  

我读过有关VS对ipairs没有返回固定结果顺序的东西

ipairs是表的数组元素的迭代器,从头到尾依次。 "数组元素"被定义为表的成员,其键是[1, #tbl]范围内的数值,其中#tbl是应用于表的长度运算符。

pairs所有表元素的迭代器:数组和非数组元素。表的非数组元素没有Lua的内在顺序,因此pairs将以任何顺序返回它们。即使数组元素在技术上确实有订单,pairs也不会为它们做例外;它总是以任意顺序运作。

您的代码就像ipairs一样:迭代表中的每个数字键,从1到其长度。