Die naheliegende Lösung wäre, die Zeichenfolge zu parsen und die Hierarchietabelle daraus zu konstruieren. Aber eine cleverere Lösung ist, lua es für Sie tun zu lassen. Mit etwas metamagische und Funktion Umgebung Manipulation kann dies geschehen:
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")
diese Ausgänge:
{
A = {
B = {
C = {
D = {
}
}
}
}
}
'local tbl =" ABCD "' und '(function (s, k) loadstring (s .. ('}'): rep (k))() end) ((tbl .. '. '): gsub ('%. ',' = {')) ' –