Lua错误尝试对局部变量执行算术运算
下面是函数 计算lua:Lua错误尝试对局部变量执行算术运算,lua,luajava,Lua,Luajava,下面是函数 计算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
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()尝试使用
L.pushNumber
而不是L.pushJavaObject
,如下所示:
L.getGlobal("foo");
L.pushNumber(8.0);
int retCode = L.pcall(1,1,0);
String errstr = L.toString(-1);
Lua可能将JavaObject视为一种“userdata”,在这种情况下,它没有预定义的操作;Lua不知道如何处理JavaObject*2
,因为您没有定义如何处理它
OTOH,Lua确实知道如何处理数字,因为这是一个内置的基本类型。对于您介绍的代码片段,推送一个数字是让它工作起来最不痛苦的方式,而不是编写额外的代码告诉Lua如何使用包装在JavaObject中的数字。尝试使用
L.pushNumber
而不是L.pushJavaObject
:
L.getGlobal("foo");
L.pushNumber(8.0);
int retCode = L.pcall(1,1,0);
String errstr = L.toString(-1);
Lua可能将JavaObject视为一种“userdata”,在这种情况下,它没有预定义的操作;Lua不知道如何处理JavaObject*2
,因为您没有定义如何处理它
OTOH,Lua确实知道如何处理数字,因为这是一个内置的基本类型。对于您介绍的代码片段,推送一个数字是让它工作起来最不痛苦的方式,而不是编写额外的代码告诉Lua如何使用包装在JavaObject中的数字。我不确定,但它是否与
L.pushJavaObject(8)有关代码>?如果您尝试使用L.pushNumber(8)代码>取而代之?你想让我把它作为一个实际的答案发布给你,让你在这种情况下接受吗?;)是的,请看一看,我不确定,但它是否与L.pushJavaObject(8)有关代码>?如果您尝试使用L.pushNumber(8)代码>取而代之?你想让我把它作为一个实际的答案发布给你,让你在这种情况下接受吗?;)是的,请看一下