¿Hay una manera de tenerforma recomendada para tener 2+ módulos de forma recursiva se refieren el uno al otro en Lua 5.2
- Dos módulos de Lua (llamémosles
A
yB
) - Cada módulo utiliza las funciones de la otros, entonces deben
require
entre ellos - Un tercer módulo (llamémoslo
C
) puede usarA
pero noB
por ej.
C.lua
:
local A = require 'A'
-- ...
A.foo()
- Puede haber otro módulo
D
que requiereB
pero noA
y/oE
que requiere tantoA
yB
- Ni
A
niB
ni sus miembros deben estar agregado al espacio de nombres global. - Evitar el uso de las funciones
module
ysetfenv
(obsoleto en Lua 5,2)
relacionados: Lua - how do I use one lib from another? (nota:. Esta solución no maneja dependencias circulares)
¿Hay algún problema al llamar 'require' desde una función como esta? Solo lo he visto usado en el nivel superior. – finnw
No hay ninguna advertencia en el [manual de referencia] (http://www.lua.org/manual/5.1/manual.html#pdf-require) al respecto, por lo que creo que es seguro. –
Puede usar 'require' en cualquier parte del código. Por ejemplo, a menudo uso este modismo para iniciar el RemDebug en un punto dado del archivo: 'si alguna condición requiere 'remdebug.engine'.start() end' –