Как префикс таблицы Lua?

У меня есть файл lua, содержимое которого представляет собой таблицу lua, как показано ниже: A={}, A.B={}, A.B.C=0;,

Проблема в том, что я хочу добавить префикс XYZ перед каждым приведенным выше утверждением. Итак, после синтаксического анализа в базе данных должно быть что-то вроде этого: XYZ.A={}, XYZ.A.B={}, XYZ.A.B.C={},

Любые идеи? заранее спасибо


person Darshan Nair    schedule 08.07.2013    source источник


Ответы (4)


Вы можете загрузить файл с XYZ как среду: loadfile("mydata","t",XYZ). См. loadfile в руководстве.

Это работает в Lua 5.2. Для Lua 5.1 используйте loadfile, а затем setfenv.

person lhf    schedule 08.07.2013

Если вы можете позволить себе загрязнять свое глобальное пространство с помощью A, просто назначьте его позже:

-- load the file
-- if XYZ doesn't exist, XYZ = { A = A } would be probably shorter
XYZ.A = A
A = nil
person Bartek Banachewicz    schedule 08.07.2013

Я думаю, это то, что вы хотите:

XYZ = {}
XYZ.A = {}
XYZ.A.B = {}
XYZ.A.B.C = 0
person Yu Hao    schedule 08.07.2013

Как насчет того, чтобы просто сделать:

XYZ = {
    A = {
        B = {
            C = 0
        }
    }
}

Если вы не хотите вкладывать объекты так глубоко, вы можете сделать:

XYZ = {
    A = A
}

A = nil

Это предполагает, что вы уже объявили объект A раньше.

person Aadit M Shah    schedule 08.07.2013