Ich versuche, einen Controller mit Luaj + Java zu bauen. Ich habe die folgenden Java-Klassen
%Vor%und das folgende Lua-Skript für den Controller:
%Vor%Ich würde im Idealfall einen Controller definieren (geschrieben in lua), in dem ich die gesamte Programmlogik behalten werde, und ich möchte die API von diesem Controller meinem Java-Code zugänglich machen. Ich habe versucht, den folgenden Ansatz zu verwenden:
%Vor%Ich kann das Objekt nicht an den LuaValue übergeben. Wie kann ich ein Java-Objekt an das Lua-Skript übergeben?
PS: Kombinieren Benutzer bei Verwendung von Java und eingebettetem Scripting in der Regel Funktionen in einem Skript oder gibt es für jeden Callback ein separates Skript?
Ich habe luaj Einträge gesucht und gefunden, dass Sie nicht beantwortet haben. Ihre Frage war interessant und ließ mich suchen. Dann stellte ich fest, dass es vor 2 Jahren gefragt wurde ... Ich hoffe, dass meine Antwort für jemand anderen nützlich sein kann! Code basiert auf luaj-3.0-alpha1.
Wir brauchen ein gültiges Lua-Skript (Sie haben das function
-Schlüsselwort vergessen):
Ich habe ein bisschen Spur hinzugefügt ... Ich habe auch ähnliche Klassen wie deine gemacht:
%Vor%Hinzufügen eines Feldes, um dies auch zu testen. Für meinen Test habe ich die Klassen innerhalb der Methode deklariert, die ihre Instanzen erzeugt:
%Vor% Ich habe zuerst versucht, diese Java-Objekte mit LuaValue luaDog = LuaValue.userdataOf(dog);
in Lua zu konvertieren, aber es funktioniert nicht: Wir haben tatsächlich userdata, wie die Traces zeigen, aber keine Metatabelle, so dass wir die Methoden weder aufrufen noch auf die Felder zugreifen können .
Nachdem ich viel gesucht hatte, fand ich die richtige Beschwörungsformel heraus:
%Vor%Ich schätze die Luaj-API ... :-) Wahrscheinlich mehr für Java-Programmierer gemacht, während andere Bibliotheken eher auf Lua / C-Programmierer abzielen ...