Lua错误尝试对局部变量执行算术
这是函数 calc.lua:
function foo(n)
return n*2
end
这是我的 LuaJavaCall
L.getGlobal("foo");
L.pushJavaObject(8);
int retCode=L.pcall(1,1,0); // nResults)//L.pcall(1, 1,-2);
String errstr = L.toString(-1); // Attempt to perform arithmetic on local variable 'n'
更新:如下所示,我需要使用 L.pushNumber(8.0) 而不是 L.pushJavaObject()
Here is the function
calc.lua:
function foo(n)
return n*2
end
Here is my LuaJavaCall
L.getGlobal("foo");
L.pushJavaObject(8);
int retCode=L.pcall(1,1,0); // nResults)//L.pcall(1, 1,-2);
String errstr = L.toString(-1); // Attempt to perform arithmetic on local variable 'n'
Update: as indicated below I needed to use L.pushNumber(8.0) instead of L.pushJavaObject()
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
尝试使用
L.pushNumber
而不是L.pushJavaObject
,如下所示:Lua 可能将 JavaObject 视为“用户数据”的一种类型,在这种情况下,没有针对它的预定义操作; Lua 不会知道如何处理
JavaObject * 2
因为您没有定义如何处理它。OTOH,Lua 确实知道如何处理数字,因为那是内置的原始类型。对于您提供的代码片段,推送数字将是让它工作的最不痛苦的方法,而不是编写额外的代码来告诉 Lua 如何处理包装在 JavaObject 内的数字。
Try using
L.pushNumber
instead ofL.pushJavaObject
like this:Lua probably sees JavaObject as a type of 'userdata' in which case there are no predefined operations for it; Lua won't know what to do with a
JavaObject * 2
since you didn't define how to handle it.OTOH, Lua does know how to handle a number since that's a builtin primitive type. For the code snippet you presented, pushing a number would be the least painful way to get it working instead of writing extra code that tells Lua how to work with numbers wrapped inside a JavaObject.