Sorting 表键排序不正确
我有一张像这样的桌子Sorting 表键排序不正确,sorting,lua,Sorting,Lua,我有一张像这样的桌子 { ["slot1"] = {} ["slot2"] = {} ["slot3"] = {} ["slot4"] = {} ["slot5"] = {} ["slot6"] = {} } 当我对k,v进行循环时,我希望键从slot1(最后一个插槽)开始。当我做一个循环时,顺序不一致,插槽5首先出现,等等。什么是最好的方
{
["slot1"] = {}
["slot2"] = {}
["slot3"] = {}
["slot4"] = {}
["slot5"] = {}
["slot6"] = {}
}
当我对k,v进行循环时,我希望键从slot1(最后一个插槽)开始。当我做一个循环时,顺序不一致,插槽5首先出现,等等。什么是最好的方法
此外,我没有设计此表,无法更改键的外观创建新表:
slot = {}
for k,v in pairs(original_table) do
local i=tonumber(k:match("%d+$"))
slot[i]=v
end
Lua表顺序是不确定的。看这里 对于你的桌子,你可以试试这个
localt={
[“slot1”]={},
[“slot2”]={},
[“slot3”]={},
[“slot4”]={},
[“slot5”]={},
[“slot6”]={}
}
本地slotNumber=1
而(t['slot'..slotNumber])做什么
插槽=t[“插槽”…插槽编号]
--用老虎机做事
slotNumber=slotNumber+1
结束
如果表跳过插槽编号,则此方法无法处理。您可以编写一个简单的自定义迭代器:
本地tbl={
[“slot1”]={},
[“slot2”]={},
[“slot3”]={},
[“slot4”]={},
[“slot5”]={},
[“slot6”]={}
}
功能插槽(tbl)
局部i=0
返回函数()
i=i+1
如果tbl[“插槽”..i]~=nil,则
返回i,tbl[“插槽”.i]
结束
结束
结束
对于i,插槽中的元素(tbl)do
打印(i,元素)
结束
输出:
1 table: 0xd575f0
2 table: 0xd57720
3 table: 0xd57760
4 table: 0xd5aa40
5 table: 0xd5aa80
6 table: 0xd5aac0
真正的键是否真的匹配相同的格式
somename
?是的,“slot”然后是数字