文字列、数値、テーブル、関数を含むLuaテーブルをシリアル化する必要があります。プログラミングLuaの本には、文字列、数値、およびテーブルで構成されるテーブルをシリアル化するためのコードがあります。この関数を適応させて、関数をシリアル化する機能を追加しようとしました。具体的には、type =='function'のケースを追加し、関数でstring.dumpを呼び出しました。
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
これにより、Luaバイトコードがプレーンテキストテーブル表現の残りの部分に挿入されました。それが私たちが思いついた最も近いものでした。
彼のシリアル化された結果が人間が読める形式であるかどうかは関係ありません。次のように機能する必要があります。
mytable = [some complicated lua table with functions]
dump = dump_t(mytable)
...
loaded_table = load_t(dump)
何か案は?