Lua Error Попытка выполнить арифметику с локальной переменной
Вот функция 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 ответ
Попробуйте использовать 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', и в этом случае для него нет предопределенных операций; Луа не будет знать, что делать с JavaObject * 2
так как вы не определили, как справиться с этим.
OTOH, Lua знает, как обращаться с числом, так как это встроенный примитивный тип. Для представленного вами фрагмента кода нажатие числа будет наименее болезненным способом заставить его работать вместо написания дополнительного кода, который сообщает Lua, как работать с числами, заключенными в JavaObject.