2013-07-09 2 views
-2

У меня уже есть таблица lua A={}, A.B={} под глобальной переменной. У меня есть функция при вызове того, что создает таблицу lua D1={}, D1.D2={}, но эта функция помещает эту таблицу в список глобальных переменных. Когда я печатаю все значения lua, он печатает: A={}, A.B={}, D1=={}, D1.D2={}. Есть ли способ, который я могу создать функцию под таблицей под A={}, A.B={}, которая означает, что я хочу, чтобы результат был следующим: A={}, A.B={}, A.B.D1=={}, A.B.D1.D2={}. Я не хочу использовать table.insert(), поскольку hirarchy из source-table неизвестен.Lua dont allow table append

+0

Обратите внимание, что 'table.insert' работает только с вставкой индекса. Вы не можете вставить ключ с ним. – greatwolf

+0

Разве вы уже не спрашивали об этом в http://stackoverflow.com/questions/17525622/how-to-prefix-a-lua-table? – dualed

ответ

2

Похоже на то, что вы хотите сделать здесь, передает таблицу функции, которая создает D1 и D1.D2, чтобы вы могли добавлять эти значения туда, где вы хотите.

function addTable(tbl) 
    tbl.D1 = {} 
    tbl.D1.D2 = {'test'} 
end 

addTable(A.B) 
-- now you can call A.B.D1.D2 
print(A.B.D1.D2[1]) -- prints 'test' 
+0

Вам также не нужно выполнять задание. Вы можете просто использовать 'tbl.D1 = {D2 = {'test'}}' в теле addTable. –