LuaJ: передать ссылки на объекты в код lua - PullRequest
0 голосов
/ 26 июня 2018

В настоящее время я работаю над проектом с LuaJ, библиотекой, которая позволяет Java интерпретировать код Lua и выполнять его. Из того, что я до сих пор собирал, я могу передать только те значения, которые может понять сам Lua, такие как примитивы, таблицы, пользовательские данные и т. Д.

Я не могу найти, например, способ вызова функции, определенной в Lua, путем передачи ссылки на объект в качестве аргумента.

И это имеет смысл. Lua не может понять ссылки на объекты Java, это справедливо.

Решением, которое я придумал, было создание менеджера виртуальной памяти. В простейшей реализации, которую я могу придумать, это, по сути, будет Map<Integer,Object>. Бит Integer используется в скриптах Lua, что-то вроде doSomethingWithObject(object), где объект на самом деле является LuaValue ключа Integer из карты.

Когда вызывается doSomethingWithObject(object) (а это функция, определенная в Java, расширенная с OneArgFunction), она должна подключиться к Map<Integer,Object>, извлечь объект, представленный целочисленным значением, и делать все, что захочет с объектом.

Это имеет запах. Я не уверен, есть ли лучшие способы сделать это. Если таковые имеются, я хотел бы прочитать любую информацию, которую смогу получить.

...