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.

Другие вопросы по тегам