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

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

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

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

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('添加项到子组:'..x..',主组:'..i)
      data[i]['subItems'] = {}
      data[i]['subItems'][x] = {['items'] = subItems}
    end

  end

end

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

这是什么巫术?

点赞
用户1052748
用户1052748

糊涂的我,我怎么会错过它呢!

当然,答案是将 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
2020-06-18 08:58:38