c'è un modo per averemodo consigliato per avere 2+ moduli si riferiscono in modo ricorsivo gli uni agli altri in Lua 5.2
- Due moduli Lua (chiamiamoli
A
eB
) - Ogni modulo utilizza le funzioni dal altro, quindi devono
require
l'un l'altro - Un terzo modulo (chiamiamolo
C
) può utilizzareA
ma nonB
ad es.
C.lua
:
local A = require 'A'
-- ...
A.foo()
- Ci può essere un altro modulo
D
che richiedeB
ma nonA
e/oE
richiede siaA
eB
- Né
A
néB
né loro membri dovrebbero essere aggiunto allo spazio dei nomi globale. - Evitare di utilizzare le funzioni
module
esetfenv
(deprecato in Lua 5,2)
Related: Lua - how do I use one lib from another? (nota:. Questa soluzione non gestisce le dipendenze circolari)
C'è qualche danno nel chiamare 'require' all'interno di una funzione come questa? L'ho sempre visto usato al massimo livello. – finnw
Non c'è alcun avviso nel [manuale di riferimento] (http://www.lua.org/manual/5.1/manual.html#pdf-require) a riguardo, quindi penso che sia sicuro. –
Puoi usare 'require' ovunque nel codice. Per esempio, spesso uso questo idioma per avviare RemDebug in un determinato punto del file: 'se la condizione richiede quindi 'remdebug.engine'.start() end' –