In Vanille Lua 5.2 habe ich ein Modul, das enthält:Module jeweils andere lokale Objekte
Zwei lokale Funktionen, A und B: B wird ein Gespräch immer, A wird manchmal B anrufen und manchmal wird die in C gespeicherten Funktionen aufrufen;
C: eine Tabelle (lokal). Es enthält Tabellen, die Tabellen enthalten, die Tabellen enthalten können, die am Ende Funktionen enthalten. Diese Funktionen können entweder A oder B anrufen;
Dann gibt es die Rückgabe-Funktion, D, die zurückgegeben wird, wenn mein Modul mit
require
geladen wird. Es ruft A.
Am Ende, es sieht ganz so aus:
--don't pay attention to what the functions do:
--I am only writing them down to explain how they interact with each other
local A, B, C
C = {
...
{
function(a)
B(a)
end
}
...
}
A = function(a)
...
if (...) then
B(a)
end
...
if (...) then
C[...]...[...](a)
end
...
end
B = function(a)
A(a)
end
return function(s) -- we called this one D
A(s)
end
Nun, mein Problem ist folgendes: die Deklaration von C verwendet eine eigene lokale Variablen, Metatables und alles, was Sachen, zu dem Punkt, den ich seine Deklaration in einem Block do ... end
beifügte.
Es ist auch - mit all diesen Tabellen in Tabellen und Zeilenumbrüche für jede geschweifte Klammer und Einzug und so weiter - ziemlich lang. Also wollte ich es in ein eigenes Modul stecken, aber dann konnte es nicht auf B.
Also meine Frage ist: gibt es eine Möglichkeit, B und vielleicht sogar A an die Datei übergeben, wo C beim Laden deklariert wird es? Ich meine, so etwas wie diese, wenn es möglich wäre:
--in the original module
local A, B, C
C = require("c", A, B)
...
Und dann, in c.lua:
local A, B = select(1, ...), select(2, ...)
C = {
...
{
function(a)
B(a)
end
}
...
}
Ich habe wirklich keine Ahnung, wie es zu tun.
Gibt es eine Möglichkeit, Variablen von der erforderlichen Datei an die erforderliche Datei zu übergeben, bei der die Variablen nicht in den globalen Namespace eingefügt werden?
Das ist clever, wirklich clever. – user6245072