2015-01-19 2 views
1

Я очень новичок в Lua, и я пытаюсь глобально инициализировать таблицу в самом начале моей программы. В верхней части, у меня есть:Инициализация и использование глобальной таблицы

storage = {} 

Тогда, я хочу, чтобы перебрать элементы в этой таблице внутри функций в одном файле. Одним из примеров является:

local output 
for item in storage do 
    output = output .. item 
end 
return output 

В этом случае, я получаю:

attempt to call a nil value 

На линии, начиная с for.

Я также пробовал распечатать storage[1]. В этом случае я получаю:

attempt to index local 'storage' (a nil value) 

Может кто-нибудь объяснить простым языком, что здесь может быть неправильным?

+0

Вы инициализируете эту переменную 'storage' в том же файле, что и код, пытающийся ее использовать? Если вы не попадаете в границы модулей? В какой среде вы используете lua? –

+1

Возможно, вы захотите взглянуть на синтаксис for-loop. Он ожидает три значения: вызываемый, контекст и ключ запуска. 'pairs' возвращает такой ... – Deduplicator

+0

Инициализируется в том же файле. Он находится в пределах настраиваемой структуры, но я скопировал структуру точно. Я изменил его на 3-значение для цикла, и я получаю 'попытку получить длину локального хранилища '(значение nil)' – James

ответ

1

Вы не показываете весь сценарий, но ясно, что storage значения получает сброс где-то между инициализацией и использованием в for item in storage do, потому что если он сохраняет свое значение, вы получите другую ошибку: attempt to call a table value.

Вы должны использовать ipairs или pairs функцию в цикле - for key, item in pairs(storage) do - но сначала нужно, чтобы исправить все, что сбрасывает значение storage.

Смежные вопросы