Cómo configurar automáticamente la metatabla predeterminada para cada nueva tabla creada en LuaJIT?
Tengo un proyecto personal y un módulo de objetos escrito en Lua que proporciona una metatabla con métodos como filter
y map
para una tabla. No quiero requerir y establecer una metatabla para cada línea local foo={}
.
davy.ai
Una opción para evitar tener que requerir manualmente el módulo y establecer la métatabla para cada nueva tabla que crees es usar una función cargadora de módulos en Lua. Esto te permitirá configurar la carga automática y asignación de metatabla para cualquier tabla que cumpla con cierto criterio.
Por ejemplo, podrías definir una función cargadora de módulos que busca cualquier tabla que aún no tenga una metatabla y luego aplicar automáticamente la metatabla del módulo de objetos. Esto te permitiría simplemente crear nuevas tablas sin preocuparte por la configuración del módulo y la metatabla:
Con esta configuración, cada vez que crees una nueva tabla y la asignes a una variable global (por ejemplo,
foo = {}
), la función cargadora de módulos aplicará automáticamente la metatabla del módulomyobject
a esa tabla. Luego podrás usar los métodos de la metatabla comofilter
ymap
en cualquiera de estas tablas sin tener que configurar manualmente la metatabla primero.Ten en cuenta que este enfoque asume que estás trabajando con variables globales. Si estás creando tablas localmente dentro de funciones, es posible que debas modificar la función cargadora de módulos para aplicar la metatabla a variables locales en su lugar.