LUA скрипт: Вложенный l oop вставляет только последний элемент - PullRequest
1 голос
/ 18 июня 2020

У меня две петли, основная l oop и вспомогательная oop внутри основной l oop. Оба цикла заполняют одну и ту же таблицу (и подтаблицу). Но по какой-то причине sub-l oop сохраняет только последний добавленный элемент во вложенной таблице.

Например, основная группа 1 имеет подгруппы, сохраненные как 1-9:

printTable (data [1] [subItems] [1]) - возвращает error (index nil value)

printTable (data [1] [subItems] [9]) - выводит таблицу на консоль

Если я сломаю sub-l oop после одной итерации, тогда 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

Так как я печатаю некоторую отладочную информацию внутри под-l oop , Я знаю, код выполняется. И я знаю, что loadItems (x) получает данные на каждой итерации, потому что, если я выгружаю loadItems (x) на консоль в sub-l oop, все будет на каждой итерации.

Что это волшебник dry?

1 Ответ

1 голос
/ 18 июня 2020

Глупый, как я мог это пропустить!

Ответ, конечно же, переместить data [i] [subItems] = {} за пределы sub-l oop :

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...