如何使用 Luaj 评估简单的表达式?
2016-10-9 4:33:58
收藏:0
阅读:54
评论:2
我完全是新手Lua。
我有一个非常简单的脚本: " var = 1"
我没有找到如何从我的java应用程序中获取此表达式的结果:
" var == 3 and 100 or -1"
我从这里开始:
Globals globals = JsePlatform.standardGlobals();
LuaValue chunk = globals.load("var = 4");
chunk.call();
LuaValue luaGetLine = globals.get("var");
如预期一样返回“4”。
但是
LuaValue luaGetLine = globals.get("var_tex1 == 3 and 100 or -1");
返回nil
点赞
用户1020123
globals.get("key") 返回全局表中对象的 LuaValue 值,它不用于执行表达式。您作为示例提供的代码试图找到名为 "var_tex1 == 3 and 100 or -1" 的变量,因为没有这样的变量而返回 null。
如果您需要 100 或 -1,则应尝试在 Java 中计算:
int result = globals.get("var_tex1").checkint() == 3 ? 100 : -1;
如果您需要结果为 LuaValue 类型,则可以尝试以下操作:
public static final LuaValue Lua_100 = LuaInteger.valueOf(100);
public static final LuaValue Lua_n1 = LuaInteger.valueOf(-1);
public LuaValue check() {
return globals.get("var_tex1").checkint() == 3 ? Lua_100 : Lua_n1;
}
另一种选择是像您设置值一样操作:
public LuaValue eval(String s)
{
LuaValue chunk = globals.load("__temp_result__=" + s);
chunk.call();
LuaValue result = globals.get("_temp_result_");
globals.set("__temp_result__", LuaValue.NIL);
return result;
}
然后调用:
LuaValue result = eval("var_tex1 == 3 and 100 or -1");
如果您想要一个整数而不是 LuaValue,只需在 LuaValue 上调用 checkint() 即可。
2016-08-24 02:50:11
评论区的留言会收到邮件通知哦~
推荐文章
- 如何将两个不同的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中获取用户配置主目录的跨平台方法
LuaValue luaGetLine = globals.get("var\_tex1 == 3 and 100 or -1");你想要读取以表达式“var_tex1 == 3 and 100 or -1”结果作为名称的全局变量。结果可能是100或者-1。虽然你可以用这样的“名称”创建变量,因为全局环境只是另一个像其他所有表一样的表,但这可能不是你真正想要做的事情。