Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sorting 表键排序不正确_Sorting_Lua - Fatal编程技术网

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”然后是数字