缓存lua脚本

时间:2011-03-09 09:35:08

标签: scripting lua

我有一些多次使用的lua脚本。每次我在脚本之间进行更改时,我都不想使用luaL_load。例如:


load script1
run script1
load script2
run script2
load script1
run script1

我想保留一个引用或者某些东西给script1,以便能够在不重新加载的情况下运行它。这可能吗?我是lua的新手,也许这个问题很愚蠢...但对我而言,如果经常使用脚本,则可以避免加载脚本。我希望上面的代码可以像这样:

load script1
load script2

set current script script1
run script1
set current script  script2
run script2
set current script  script1
run script1

1 个答案:

答案 0 :(得分:6)

好吧,您需要做的就是保存luaL_loadfile推送到堆栈的已编译块。为此,您可以使用lua_pushvalue(L,-1)在堆栈顶部复制已编译的块(因为luaL_ref将弹出它),并int luaL_ref(L,LUA_REGISTRYINDEX)来获取对它的引用在注册表中。每当你需要块时,你可以使用lua_rawgeti(L,LUA_REGISTRYINDEX, refToChunk),它会将块推回堆栈,准备好lua_call