После разбора таблицы на строку - > invert (разбор строки на таблицу)


У меня есть многомерная таблица, которую я разбираю на строку (работает нормально). Позже во время выполнения мне, возможно, придется проанализировать его обратно (он содержит конфигурации).

Существует ли какой-либо удобный способ разбора строки на многомерную таблицу?

Пример:

table_xy = {}
table_xy.a = {  a= {}, b = 12, c = "sdf" , d = true , e = {}}
table_xy.b = { false,true,true,false}
table_xy.a.a = {lolbert, roflcopter}
table_xy.a.e = {4, table_xy.a.e}

Print(string_from_table_xy) (после синтаксического анализа) вывод:

{a={a={},c="sdf",b=12,e={4,{}},d=true},b={false,true,true,false}}  

Самый высокий дефт находится на 7-й таблице от материнской таблицы, но это может измениться позже.

2 2

2 ответа:

Вы можете загрузить строку, а затем запустить ее как функцию следующим образом:

local func = assert(load("return " .. string_from_table_xy))

local t = func()

В Lua 5.1 используйте loadstring вместо load.

Ах, боже мой, извините за беспокойство. Ответ прост, насколько это возможно.

loadstring(string_from_table) 

Работает довольно хорошо. Конечно, это медленно, но я не думаю, что можно было бы сделать это с лучшей производительностью, удерживая комфорт этой единственной линии.