Возвращает несколько значений с помощью LuaJava

StackOverflow https://stackoverflow.com//questions/9622365

  •  09-12-2019
  •  | 
  •  

Вопрос

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

Это было полезно?

Решение

Проблема может заключаться в том, что первым параметром всегда является сам объект 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
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top