2012-05-27 6 views
1

Nous devons sérialiser une table Lua qui inclut des chaînes, des nombres, des tables et des fonctions. Il y a du code dans le livre Programming Lua pour sérialiser les tables qui sont constituées de chaînes, de nombres et de tables. Nous avons essayé d'adapter cette fonction pour ajouter la possibilité de sérialiser les fonctions. Plus précisément, nous avons ajouté un cas pour le type == « fonction » et appelé string.dump sur la fonction:Serialize table Lua, y compris les fonctions Lua pur?

if type(o) == "number" then 
    return tostring(o) 
elseif type(o) == "function" then 
    return "loadstring("..string.dump(o)..")" 
else 
    -- assume it is a string 
    return string.format("%q", o) 
end 

Cette injection bytecode Lua dans le reste de la représentation de la table plaintext. C'était la chose la plus proche que nous pouvions trouver.

Nous ne nous soucions pas s'il sérialisé résultat est ou non lisible par l'homme, il doit juste pouvoir travailler comme ceci:

mytable = [some complicated lua table with functions] 
dump = dump_t(mytable) 

... 

loaded_table = load_t(dump) 

Toutes les idées?

Répondre