从两个不同的Lua脚本中加载具有相同名称的两个函数的LuaJ。
2014-2-27 15:55:41
收藏:0
阅读:101
评论:2
我有两个包含相同名称函数的Lua脚本:
luaScriptA:
function init()
print( 'This function was run from Script A' )
end
luaScriptB:
function init()
print( 'This function was run from Script B' )
end
我想使用LuaJ将这两个函数加载到全局环境中,对于一个脚本,我通常会这样做:
LuaValue chunk = globals.load(new FileInputStream(luaScriptA), scriptName, "t",
globals);
chunk.call();
这将加载init()函数到全局中,我可以使用以下方式在Java中执行此函数:
globals.get("init").call();
当我加载第二个脚本时,问题就出现了,这将覆盖以前声明的所有相同名称的函数。是否有任何方式可以防止这种情况并轻松区分这两个函数?例如类似于:
globals.get("luaScriptA").get("init").call(); //访问脚本A中的init函数
globals.get("luaScriptB").get("init").call(); //访问脚本B中的init函数
请注意,脚本还包含其他函数,我的目标是单独运行脚本中的各个函数,而不是一次性运行完整的脚本。 在JME平台上工作。
点赞
用户107090
下面的代码将脚本加载到它们自己的环境中,该环境从全局环境继承以进行读取,但不是写入。换句话说,您可以调用 print,但每个脚本定义自己的 init。您可能需要做一些事情才能在 LuaJ 中使用它,但我不知道具体操作。
local function myload(f)
local t=setmetatable({},{__index=_G})
assert(loadfile(f,nil,t))()
return t
end
local A=myload("luaScriptA") A.init()
local B=myload("luaScriptA") B.init()
2014-02-27 16:54:54
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
将你的函数放在表格中
luaScriptA:
A = {} -- "module" function A.init() print( '此函数来自脚本A' ) endluaScriptB:
B = {} -- "module" function B.init() print( '此函数来自脚本B' ) end然后你将执行:
globals.get("A").get("init").call(); globals.get("B").get("init").call();