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?

Foi útil?

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
scroll top