是这个脚本:
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
如果不是那么为什么,以及最佳的表现方式是什么呢?
答案 0 :(得分:4)
我读过有关VS对ipairs没有返回固定结果顺序的东西
ipairs
是表的数组元素的迭代器,从头到尾依次。 "数组元素"被定义为表的成员,其键是[1, #tbl]
范围内的数值,其中#tbl
是应用于表的长度运算符。
pairs
是所有表元素的迭代器:数组和非数组元素。表的非数组元素没有Lua的内在顺序,因此pairs
将以任何顺序返回它们。即使数组元素在技术上确实有订单,pairs
也不会为它们做例外;它总是以任意顺序运作。
您的代码就像ipairs
一样:迭代表中的每个数字键,从1到其长度。