2016-08-20 5 views
2

나는 루아에서 약간의 코드를 작성하고 있으며 코드에서 매우 실망스러운 버그/실수가 발생했습니다.Lua 테이블을 예상대로 채우지 않음

network = {} 
network.neurons = {} 

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

NewNeuron() 함수는 일부 변수로 새 객체를 만듭니다. 이 for 루프 내의 print()는 예상대로 올바른 변수가있는 테이블을 반환합니다. 다음과 같이 인쇄 후 4 개 콘솔 라인을 기록

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

: :이 루프에서 다시 인쇄를 사용하려고하면 문제가 온다

(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