Wie kann ich den folgenden Fehler von Lua 5.1 vermeiden, wenn ich versuche, eine zirkuläre Anforderung zu stellen?
%Vor%main.lua
%Vor%foo.lua
%Vor%bar.lua
%Vor% Eine andere Möglichkeit zur Lösung dieses Problems bestünde darin, die Struktur des Codes zu ändern und die "gegenseitige" Funktionalität in ein drittes Modul zu extrahieren, was sowohl Foo
als auch Bar
erfordern würde.
main.lua
%Vor%foo.lua
%Vor%bar.lua
%Vor%Da Sie globale Variablen festlegen, können Sie prüfen, ob die Datei bereits benötigt wurde (aka; die globale bereits definiert), bevor Sie eine andere erfordern:
%Vor% Ihr bar.lua
müsste dann die Definition von Bar zurückgeben;
Dies wird das Problem nicht vollständig lösen, da bar.lua
erwartet, dass Foo
definiert wird. Um dies zu beheben, können Sie eine Dummy-Variable mit demselben Namen definieren:
Dies ist nur möglich, weil Sie die Verwendung von Foo
auf den Aufruf der Funktion zurückstellen. Wenn Sie Foo.name
im Rahmen von bar.lua
aufrufen möchten, würden Sie das gleiche zirkuläre Abhängigkeitsproblem haben.
Tags und Links lua circular-dependency