Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/lua/3.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
有没有一种方法可以遍历lua字典,以便它';是什么创造的?_Lua_Lua Table - Fatal编程技术网

有没有一种方法可以遍历lua字典,以便它';是什么创造的?

有没有一种方法可以遍历lua字典,以便它';是什么创造的?,lua,lua-table,Lua,Lua Table,我需要按照字典创建的顺序遍历它 例如: t = { ['some'] = 'xxx', ['random'] = 'xxx', ['data'] = 'xxx', ['in'] = 'xxx', ['table'] = 'xxx', } 对的正常迭代给出了一个随机序列顺序: for key, val in pairs(t) do print(key.." : "..val) end random : xxx some : xxx data : xxx table : xxx in :

我需要按照字典创建的顺序遍历它

例如:

t = {
['some'] = 'xxx',
['random'] = 'xxx',
['data'] = 'xxx',
['in'] = 'xxx',
['table'] = 'xxx',
}
对的正常迭代给出了一个随机序列顺序:

for key, val in pairs(t) do
   print(key.." : "..val)
end

random : xxx
some : xxx
data : xxx
table : xxx
in : xxx
我需要:

some : xxx
random : xxx
data : xxx
in : xxx
table : xxx

编辑:更改了答案,下面是旧答案供参考

-- function definition
function addNewItem(keyTable, myTable, key, value)
    table.insert(keyTable, key)
    myTable[key] = value 
end 
要将新对添加到表中,请执行以下操作:

-- you may need to reset keyTable and myTable before using them
keyTable = { }
myTable = { }

-- to add a new item
addNewItem(keyTable, myTable, "key", "value")
然后,按照添加键的顺序进行迭代:

for _, k in ipairs(keyTable) do 
    print(k, myTable[k]) 
end

旧答案 您是创建表的人吗(Lua调用这些表而不是字典)??如果是这样,您可以尝试以下方法:

-- tmp is a secondary table
function addNew(A, B, key, value)
  table.insert(A, key)
  B[key] = value
end

-- then, to browse the pairs
for _,key in ipairs(table) do
  print(key, B[key])
done
我们的想法是使用两张桌子。一个保存您添加的“键”(A),另一个保存(B)实际值。它们看起来像这样:

因为A以如下方式配对键

1 - key1
2 - key2
...
然后ipairs(A)将始终按照您添加的顺序返回密钥。然后 使用这些键访问数据

data = B[key1]

对不起,这对我来说不够清楚。我已经创建了一个表,只需要遍历它。你能再解释一下吗?如何在我的表“t”上调用addNew()函数?是否手动添加“键值”对来创建表?或者您是否手动使用类似“myTable=createATableFromRandomData(data)”,它存储在一个单独的文件中,我需要对其进行迭代。我更新了答案,看看这是否有用。谢谢。这并不是我所期望的那样,因为会有很多额外的代码——我的表非常大,使用这种方法它们会大两倍(表是从第三方应用程序生成的,所以没有机会更改它们的结构)。不过还是要谢谢你,你的方法很有效。