Возврат нескольких значений с помощью LuaJava - PullRequest
0 голосов
/ 08 марта 2012

Мне нужно иметь возможность вернуть (X, Y) позицию из Java в Lua, и я не могу понять, как это сделать. С C API вы просто помещаете значения в стек, а затем возвращаете количество возвращаемых значений, но, похоже, LuaJava не делает этого. Есть предложения?

1 Ответ

0 голосов
/ 08 марта 2012

Проблема может заключаться в том, что первым параметром всегда является сам объект JavaFunction. Допустим, вам нужна функция addmult, которая принимает два числа и возвращает их сумму и произведение. Числовые параметры должны быть получены как индексы 2 и 3, как показано ниже:

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");

Теперь вы должны получить похожий результат в вашем коде:

print(addmult(3, 5)) --> 8    13
...