LUA脚本:嵌套循环仅插入最后一项

时间:2020-06-18 08:48:30

标签: arrays for-loop datatable lua nested

我有两个循环,一个主循环和一个位于主循环内的子循环。两个循环都填充相同的表(和子表)。但是由于某种原因,子循环仅将最后添加的项目存储在嵌套表中。

例如,主组1的子组存储为1-9:

printTable(data [1] [subItems] [1])-返回错误(索引为nil的值)

printTable(data [1] [subItems] [9])-将表转储到控制台

如果我在一次迭代后中断了子循环,那么 data [1] [subItems] [1] 包含数据

for i=startId, endId, 10 do

  items = loadItems(i)
  data[i] = {['items'] = items}

    for x=i+1, i+10-1 do
      subItems = loadItems(x)
      print('adding items to sub-group: '..x..' for main group: '..i)
      data[i]['subItems'] = {}
      data[i]['subItems'][x] = {['items'] = subItems}
    end

  end

end

由于我正在子循环内打印一些调试信息,所以我知道代码正在执行。而且我知道loadItems(x)在每次迭代中都获取数据,因为如果我将loadItems(x)转储到子循环中进行控制台,则每次迭代中都存在该数据。

这是什么巫术?

1 个答案:

答案 0 :(得分:1)

对不起,我怎么想念它!

答案当然是将 data [i] [subItems] = {} 移到子循环之外:

for i=startId, endId, 10 do

  items = loadItems(i)
  data[i] = {['items'] = items}

    data[i]['subItems'] = {} <----------------------------------------------
    for x=i+1, i+10-1 do
      subItems = loadItems(x)
      print('adding items to sub-group: '..x..' for main group: '..i)
      data[i]['subItems'][x] = {['items'] = subItems}
    end

  end

end