Retornar vários valores com LuaJava
Pergunta
Eu preciso ser capaz de devolver uma (X, Y) posição do Java para Lua e eu não consigo descobrir como fazê-lo.Com a API C, você teria apenas que empurrar os valores na pilha e, em seguida, retornar o número de valores de retorno, mas que não parecem ser como LuaJava faz.Alguma sugestão?
Solução
O problema pode ser que o primeiro parâmetro é sempre o JavaFunction próprio objeto.Vamos dizer que você quer uma função addmult
que tem dois números e retorna a soma e o produto.Os parâmetros numéricos têm de ser recuperados como índices 2 e 3, como segue:
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");
Agora, você deve obter um resultado semelhante no seu código:
print(addmult(3, 5)) --> 8 13
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow