Lua-使用for循环创建嵌套表



我是lua的新手,所以如果材料对表格有帮助,我很乐意阅读。

我已经解码了一个json对象,并希望使用它的数据正确地构建一个表,而不是写下面的64行:

a = {}
a[decode.var1[1].aId] = {decode.var2[1].bId, decode.var3[1].cId}
a[decode.var1[2].aId] = {decode.var2[2].bId, decode.var3[2].cId}
a[decode.var1[3].aId] = {decode.var2[3].bId, decode.var3[3].cId}
...etc

因为数字是连续的1-64,我想我应该能够使用for循环来构建它。不幸的是,尽管我经历了表构建的想法,但我似乎找不到实现这一点的方法,也找不到任何关于使用循环创建嵌套表的方法。

如有任何帮助或指示,我们将不胜感激。

至少在我看来,循环的Lua非常容易理解:

for i = 1, 10 do
print(i)
end

该循环包括打印正整数110

Lua-for循环还采用了可选的第三个参数——默认为1——指示循环的步骤:

for i = 1, 10, 2 do
print(i)
end

这个循环打印数字110,但每隔一个数字跳过一次,即它有一个步骤2;因此它将打印1 3 5 7 9

在你的例子中,如果我理解正确的话,你似乎知道for循环的最小界和最大界,分别是164。你可以写一个循环来解码这些值,并将它们放在一个表格中,如下所示:

local a = {}
for i = 1, 64 do
a[decodevar.var1[i].aId] = {decode.var2[i].bId, decode.var3[i].cId}
end

您可以使用for循环生成一个包含解码JSON中所有内容的新表。

例如,

function jsonParse(jsonObj)
local tbl = {}
for i = 1, 64 do
a[decodevar.var1[i].aId] = {decode.var2[i].bId, decode.var3[i].cId}
end
return tbl
end

为了处理嵌套的情况,您可以递归地调用该方法,如下所示

function jsonParse(jsonObj)
local tbl = {}
for i = 1, 64 do
a[decodevar.var1[i].aId] = {decode.var2[i].bId, decode.var3[i].cId}
if type(decode.var2[i].bId) == "table" then
a[decodevar.var1[i].aid[0] = jsonParse(decode.var2[i].bId)
end
end
end

顺便说一句,我不明白你为什么要用一个已经完成了你想要的工作的表来创建一个表。我假设它们只是随机的,你可能必须用中的decodevar变量的结构来编辑代码

最新更新