缓存Lua脚本

我有一些经常使用的lua脚本。 我不想每次在脚本之间切换时都使用luaL_load加载。 例如:

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

我想保留对script1的引用或其他东西,以便能够再次运行它而不必重新加载它。 这可能吗? 我是Lua的新手,也许这个问题很愚蠢 ... 但对我来说,避免加载经常使用的脚本似乎是一项很好的优化。 我想将上面的代码转换为以下代码:

load script1
load script2

设置当前脚本为script1
run script1
设置当前脚本为script2
run script2
设置当前脚本为script1
run script1

原文链接 https://stackoverflow.com/questions/5243775

点赞
stackoverflow用户513763
stackoverflow用户513763

好的,你只需要将由 luaL_loadfile 推入堆栈的编译块保存即可。为了实现此目的,你可以使用 lua_pushvalue(L,-1) 来将编译块的副本放在堆栈的顶部(因为 luaL_ref 会弹出它),并且使用 int luaL_ref(L,LUA_REGISTRYINDEX) 在注册表中获得对它的引用。每当你需要该块时,你可以使用 lua_rawgeti(L,LUA_REGISTRYINDEX, refToChunk),它会将该块推回到堆栈中,准备 lua_call 进行调用。

2011-03-09 11:10:28