Lua Error Попытка выполнить арифметику с локальной переменной - PullRequest
1 голос
/ 24 декабря 2011

Вот функция 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 Ответ

1 голос
/ 24 декабря 2011

Попробуйте использовать 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.

...