scripting - 缓存lua脚本

标签 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

最佳答案

好吧,您需要做的就是保存 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/

相关文章:

java - JShell 的限制是什么?

optimization - 具有快速初始化功能的 JVM 脚本语言

string - Lua:在分隔字符串中查找标记

types - 比较不同类型的值

lua - 我的 Hammerspoon 脚本中的键重复延迟

linux - Linux 的进程计数差异

Bash Echo 转义序列

python - 将 Python 脚本应用于 Blender 中的大量 .obj 文件

redis - PHP Redis Lua 脚本问题

node.js - 可以使用 Lua 脚本让 Redis 抛出事件吗?