La soluzione ovvia sarebbe di analizzare la stringa e costruire la tabella gerarchica da quella. Ma una soluzione più intelligente è lasciare che lo faccia per te. Con un po 'di metamagico e l'ambiente funzione di manipolazione questo può essere fatto:
dump = require 'pl.pretty'.dump -- convenient table dumper from penlight
function createtable(str)
local env_mt = {}
env_mt.__index = function(t, k)
rawset(t, k, setmetatable({}, env_mt))
return rawget(t, k)
end
local env = setmetatable({}, env_mt)
local f = loadstring("return "..str)
setfenv(f, env)
f()
return env
end
dump(createtable "A.B.C.D")
queste uscite:
{
A = {
B = {
C = {
D = {
}
}
}
}
}
'local tbl =" ABCD "' e '(funzione (s, k) loadstring (s .. ('}'): rep (k))() end) ((tbl .. '. '): gsub ('%. ',' = {')) ' –