Devolver múltiples valores con LuaJava
Pregunta
Necesito poder devolver una posición (X, Y) de Java a Lua y no sé cómo hacerlo.Con la API de C, simplemente insertaría los valores en la pila y luego devolvería el número de valores devueltos, pero no parece ser así como lo hace LuaJava.¿Alguna sugerencia?
Solución
El problema puede ser que el primer parámetro sea siempre el propio objeto JavaFunction.Digamos que quieres una función addmult
que toma dos números y devuelve su suma y producto.Los parámetros numéricos deben recuperarse como índices 2 y 3, de la siguiente manera:
JavaFunction addmult = new JavaFunction(L) {
@Override
public int execute() throws LuaException {
double x = L.toNumber(2);
double y = L.toNumber(3);
L.pushNumber(x+y);
L.pushNumber(x*y);
return 2;
}
};
addmult.register("addmult");
Ahora, deberías obtener un resultado similar en tu código:
print(addmult(3, 5)) --> 8 13
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow