2014-11-24 2 views
-1

Можно ли использовать цикл for для динамического обозначения переменных? Что-то такое, как:Динамически создаваемые переменные для цикла

t = {} 

For i in ipairs(tablename) do 
    t.i = something 
End 

Моя текущая задача заключается в динамическом создании protofields для Wireshark разбора, но если выше не представляется возможным, я сомневаюсь, что проблема protofield будет возможна

ответ

2

Просто сделайте t[i]. Это будет индексировать таблицу (t) со значением i.

local t = {} 

for i, _ in ipairs(othertbl) do 
    t[i] = something 
end 

(Обратите внимание, что в Lua, foo.bar короток для foo["bar"]. Также отметим, что строка "123" отличается от числа 123)

-1

Я не совсем понимаю ваша проблема, но попробуйте следующее:

t = {} 

for i in ipairs(tablename) do 
    _G["t"][i] = tablename[i]; 
end 

Или, если вы имеете в виду (я думаю, что вы имеете в виду), чтобы создать имя переменной, содержащее номер:

local tablename = {"a", "b"} 

for i in ipairs(tablename) do 
     _G["t"..i] = tablename[i]; 
end 

Итак, у вас есть переменная «t1», «t2».

_G [name] используется глобальными переменными (по крайней мере, в Runes of Magic).

Если ошибка _G [name], попробуйте вместо этого setglobal (name).

+0

Пример таблицы, что у меня является мульти-dementional стол, ~ 37 записей. Я надеялся, что сможет пройти через таблицу и создать переменную для каждой записи, которая позже будет использоваться для создания protostield wirehark. Поэтому в конце я имел бы переменную t.1-t.37, которая затем может быть использована в диссекторе – Hls

+0

'_G [" t "]' глупо. Просто сделайте 't', т. Е.' T [i] '. Также нет функции «setglobal» в ваниле Lua. –

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