从LuaJ调用Lua函数
2012-6-28 21:49:35
收藏:0
阅读:170
评论:4
所以,我有一个脚本,像这样:
function testfunction()
print("Test from testfunction");
end
我能够从Lua调用Java函数,但我如何实现相反的操作?如何使用LuaJ从Java调用Lua函数?
点赞
用户151501
这些示例非常有用。从 Java 调用 Lua 代码非常简单,因为你可以通过像 loadstring 这样的东西来完成。
https://github.com/sylvanaar/luaj/blob/master/luaj-vm/examples/jse/SampleJseMain.java
https://github.com/sylvanaar/luaj/blob/master/luaj-vm/examples/jse/ScriptEngineSample.java
2012-07-03 19:21:39
用户1059752
我不知道,也许这是你想做的事情:
(这将在 Scala 中获取返回值)
Main.scala:
import org.luaj.vm2._
import org.luaj.vm2.lib.jse._
object Main extends App {
val global = JsePlatform.standardGlobals()
global.get("dofile").call(LuaValue.valueOf("test.lua"))
val args: Array[LuaValue] = Array(LuaValue.valueof(1), LuaValue.valueof(2))
val retVals: LuaValue.Vararg = global.get("add").invoke(LuaValue.varargsOf(args))
println(retVals.arg(1))
}
test.lua:
function add(a, b)
a = a or 0
b = b or 0
return a + b
end
注意:我没有测试过代码,但我认为这样的东西应该能够工作。
编辑:在搜索时,我没有意识到这个问题与 Scala 没有什么关系(我自己在寻找在 Scala 中解决问题时来到这里)。然而,demon_ds1似乎已经在基于我的答案找到了一个解决方案,并且现在他给出了自己的答案,所以我很高兴这个混乱的答案带来了一些好的结果!
2012-11-04 13:58:22
用户1800113
我在寻找解决同样问题的方法时,得到了与Profetylen的回答非常相似的东西。
test.java:
import org.luaj.vm2.LuaValue;
import org.luaj.vm2.lib.jse.JsePlatform;
public class test
{
public static void main(String[] args)
{
//运行定义函数的Lua脚本
LuaValue _G = JsePlatform.standardGlobals();
_G.get("dofile").call( LuaValue.valueOf("./test.lua"));
//使用两个参数5,5调用函数MyAdd
LuaValue MyAdd = _G.get("MyAdd");
LuaValue retvals = MyAdd.call(LuaValue.valueOf(5), LuaValue.valueOf(5));
//打印出来自Lua函数的结果
System.out.println(retvals.tojstring(1));
}
}
test.lua:
function MyAdd( num1, num2 )
return num1 + num2
end
2012-11-05 12:31:16
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
快速浏览一下LuaJ文档,我认为你需要获取代表Lua函数的
org.luaj.vm2.LuaFunction对象,然后在其上应用invoke方法。