gpt4 book ai didi

scripting - 缓存lua脚本

转载 作者:行者123 更新时间:2023-12-02 23:39:22 25 4
gpt4 key购买 nike

我有一些多次使用的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

最佳答案

好吧,您需要做的就是保存 luaL_loadfile 的已编译 block 。压入堆栈。为此,您可以使用 lua_pushvalue(L,-1)在堆栈顶部制作已编译 block 的副本(因为 luaL_ref 会弹出它),以及 int luaL_ref(L,LUA_REGISTRYINDEX)在注册表中获取对其的引用。每当您需要该 block 时,您可以使用 lua_rawgeti(L,LUA_REGISTRYINDEX, refToChunk) ,这会将 block 推回到堆栈上,为lua_call做好准备。正在学习它。

关于scripting - 缓存lua脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5243775/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com