Estoy intentando construir un controlador usando Luaj + java. Tengo las siguientes clases de Java¿Cómo puedo pasar objetos a una función luaj expuesta?
public class Duck {
public void talk() { System.out.println("Duck quacks!"); }
public void walk() { System.out.println("Duck walks!"); }
}
public class Person {
public void talk() { System.out.println("Person talks!"); }
public void walk() { System.out.println("Person walks!"); }
}
y el siguiente script lua para el controlador:
onTalk(obj)
obj:talk();
end
onWalk(obj)
obj:walk();
end
que sería ideal sería definir un controlador (escrito en LUA) donde voy a mantener todo el programa de lógica, y me gustaría exponer la API de ese controlador a mi código java. Yo estaba tratando de utilizar el siguiente enfoque:
ScriptEngineManager sem = new ScriptEngineManager();
ScriptEngine engine = sem.getEngineByExtension(".lua");
ScriptEngineFactory factory = engine.getFactory();
// Script defined above
CompiledScript cs = ((Compilable)engine).compile(MY_LUA_SCRIPT);
SimpleBindings b = new SimpleBindings();
b = newSimpletBindings();
LuaValue onWalkHandler = (LuaValue)b.get("onWalk");
//func.call(LuaValue.valueOf(duck)); // Passing duck object does not work ???
no soy capaz de pasar el objeto a la LuaValue. ¿Cómo puedo pasar un objeto java a la secuencia de comandos lua?
PD: En general, cuando se utilizan scripts Java y embebidos, ¿las personas agrupan funciones en una secuencia de comandos o hay una secuencia de comandos separada para cada devolución de llamada?
Holy crap this is gold. Gracias. – Qix