Lua Error尝试对局部变量执行算术运算

时间:2011-12-24 03:04:06

标签: lua luajava

这是功能 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()

1 个答案:

答案 0 :(得分:1)

尝试使用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是一种“用户数据”。在这种情况下,它没有预定义的操作; Lua不知道如何处理JavaObject * 2,因为你没有定义如何处理它。

OTOH,Lua确实知道如何处理一个数字,因为它是一个内置的原始类型。对于你提供的代码片段,推送一个数字是最难以实现的方法,而不是编写额外的代码来告诉Lua如何处理包含在JavaObject中的数字。