这个排序是否保证?

这个脚本是否保证按照以下顺序输出:

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()

如果无法保证,那么最好的性能提升方法是什么?

点赞
用户734069
用户734069

ipairs是一个迭代器,用于按顺序从第一个到最后一个遍历表中的数组元素。定义为具有数值键的表成员,在范围[1,#tbl]内,其中#tbl是应用于表的长度运算符。

pairs是对表中所有元素的遍历迭代器:无论是数组还是非数组元素。表的非数组元素在Lua中没有固定的序列,因此pairs可以以任何顺序返回它们。虽然数组元素在技术上有顺序,但pairs不会为它们作任何的特殊规定;它总是无序操作。

你的代码类似于ipairs:按每个数字键从1到它的长度遍历表。

2016-09-28 21:18:51