2015-10-20 3 views
2

Итак, я создал программу Lua, чтобы отслеживать потребности собственности, которую покупает мой отец, и я хочу делать таблицы внутри таблиц с помощью NAMES. Поэтому, когда я пытаюсь добавить его через созданную мной функцию (я покажу функцию), она ожидает ), где «=» есть.Таблицы с именами внутри таблиц

--The table I'm using to store everything 
repair={} 
--The function I'm using to create tables inside tables 
function rAdd(name) 
table.insert(repair, name) 
end 
--The function I'm using to add data to those tables 
function tAdd(table, name) 
table.insert(table, name) 
end 
rAdd(wall={}) 
tAdd(wall, "Due for paint job") 

И когда я пытаюсь добавить его (rAdd(wall={})) ожидает меня, чтобы закончить спор через ) на «=». Пожалуйста помоги!

+0

Вы не можете присвоить значение переменной * в * вызов функции , Что вы на самом деле пытаетесь сделать там? Вы пытаетесь вложить таблицы? 't = {f = {}}'? В противном случае это 'wall = {}; 'rAdd (" wall ")' что вы хотите? –

ответ

2

Вместо насмешливый вокруг с table.insert, просто использовать тот факт, таблицы Lua могут быть доступны, как, столы также:

repair["wall"] = {} 

Теперь вы можете вставить в него:

table.insert(repair["wall"], "Due for a paint job") 

Если вы хотите чтобы скрыть глобальную переменную за функцией:

function rAdd(name, value) 
    repair[name] = value 
end 

rAdd("wall", {}); 

Или если лет U действительно хотите передать данные в виде таблицы:

function rAddN(entries) 
    for k,v in pairs(entries) do 
     repair[k] = v 
    end 
end 

rAddN({ wall = {} }) 

Обратите внимание, что вы можете опустить скобки в этом случае:

rAddN { wall = {} } 
+0

Большое вам спасибо! Но ... я столкнулся с другой проблемой. Всякий раз, когда у меня был table.insert, он думал бы об этом как о нулевом значении. Это произошло в прошлом, и я думаю, что это какая-то синтаксическая ошибка, есть ли у вас объяснение? –

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