在 lua 5.1 中的代码:

sums = {
    ["LD1"] = { },
    ["LD2"] = { },
    ["LD3"] = { },
    ["LD4"] = { },
    ["I1"] = { },
    ["I2"] = { },
    ["I3"] = { }
}

for fld = 1, 22, 1 do
    table.insert( sums["LD1"] , 0 );
    table.insert( sums["LD2"] , 0 );
    table.insert( sums["LD3"] , 0 );
    table.insert( sums["LD4"] , 0 );
    table.insert( sums["I1"] , 0 );
    table.insert( sums["I2"] , 0 );
    table.insert( sums["I3"] , 0 );
end

for i,O in pairs(sums) do
    print(i)
end

显示序列:

(第一次执行)
LD1
LD2
LD3
LD4
I1
I2
I3

(第二次执行)
LD1
LD2
LD3
LD4
I1
I2
I3

在 lua 5.2 中,序列以随机顺序呈现:

(第一次执行)
I1
I2
LD4
I3
LD1
LD2
LD3

(第二次执行)
LD2
LD3
LD4
I3
I1
I2
LD1

为什么在使用 lua 5.2 时会发生此错误?

最佳答案

Lua 5.2.1 引入了一些用于散列的种子随机化。

关于dictionary - lua 5.2 改变表格中元素的顺序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11974950/

10-09 03:15