Sau*_*ral 4 lua dictionary lua-table
在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
Run Code Online (Sandbox Code Playgroud)
显示顺序:
(第一次执行)
LD1
LD2
LD3
LD4
I1
I2
I3
Run Code Online (Sandbox Code Playgroud)
(第二次执行)
LD1
LD2
LD3
LD4
I1
I2
I3
Run Code Online (Sandbox Code Playgroud)
在lua 5.2中,序列以随机顺序呈现:
(第一次执行)
I1
I2
LD4
I3
LD1
LD2
LD3
Run Code Online (Sandbox Code Playgroud)
(第二次执行)
LD2
LD3
LD4
I3
I1
I2
LD1
Run Code Online (Sandbox Code Playgroud)
为什么当我使用lua 5.2时会发生这个错误?
表的元素没有指定的顺序。
您需要创建一个表,将数字索引映射到sums. 您甚至可以使用该sums表来保存子表和它们的排序。
例如:
-- create table with sum ids in a specific order
sums = { "LD1", "LD2", "LD3", "LD4", "I1", "I2", "I3" }
-- create subtables in sums for each id
for i,id in ipairs(sums) do
sums[id] = {}
end
-- stick some data in the sum tables
for fld = 1, 22 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
-- show sum tables in order
for i,id in ipairs(sums) do
print(id, sums[id])
end
Run Code Online (Sandbox Code Playgroud)