2016-08-20 2 views
2

Я кое-что кодирую в Lua, и я столкнулся с очень разочаровывающей ошибкой/ошибкой в ​​моем коде.Заполнение таблицы Lua не подходит, как ожидалось

network = {} 
network.neurons = {} 

for i=1,4 do 
    network.neurons[20000] = {} 
    network.neurons[20000][i] = NewNeuron() 
    print(network.neurons[20000][i]) 
end 

Функция NewNeuron() создает новый объект с некоторыми переменными. Функция print() внутри цикла for возвращает таблицу с правильными переменными, как ожидалось. Проблема возникает, когда я пытаюсь использовать эту печать еще раз в этом цикле:

for i=1,4 do 
    print(network.neurons[20000][i]) 
end 

печати затем записывает 4 консольных строки следующим образом:

(no return) 
(no return) 
(no return) 
*neuron info that should be printed* 

Это выглядит так, как будто только последний из 4-х предметов существует после выхода из цикла создания. Почему это? Что я делаю не так?

+1

Вы переустанавливаете таблицу в первой строке внутри цикла. Переместите эту строку за пределы цикла. –

+1

Эй, хорошо видно ... – ocuatrec

ответ

0

При создании NewNeuron вы назначаете совершенно новую таблицу внутри цикла. Декларация должна быть за пределами:

network = {} 
network.neurons = {} 
network.neurons[20000] = {} 

for i=1,4 do 
    network.neurons[20000][i] = NewNeuron() 
    print(network.neurons[20000][i]) 
end 
Смежные вопросы