ModuleScript
*Este contenido se traduce usando la IA (Beta) y puede contener errores. Para ver esta página en inglés, haz clic en aquí.
Un ModuleScript es un tipo de script que devuelve exactamente un valor por una llamada a require() . ModuleScripts ejecutar una vez y solo una vez por entorno Luau y devolver el mismo valor exacto para llamadas posteriores a require() .
ModuleScripts son objetos esenciales para adherir al principio de "No te repitas a ti mismo" (DRY), lo que te permite escribir una función solo una vez y utilizarla en todas partes.Tener múltiples copias de una función es problemático cuando necesitas cambiar su comportamiento, por lo que deberías definir funciones o grupos de funciones en y tener tus llamadas y en esos módulos.
Es importante saber que los valores de devolución de ModuleScripts son independientes con respecto a Scripts y LocalScripts , y otros entornos como la barra de comandos Command Bar.Usar require() en un ModuleScript en un LocalScript ejecutará el código en el cliente, incluso si un Script ya lo hizo en el servidor.Por lo tanto, tenga cuidado si está usando un ModuleScript en el cliente y el servidor al mismo tiempo, o lo está depurando dentro de Studio.
Tenga en cuenta que la primera llamada a require() no producirá (se detendrá) a menos que la llamada ModuleScript produzca (llame a task.wait() por ejemplo), en cuyo caso el hilo actual que llamó require() producirá hasta que el ModuleScript devuelva un valor.Si un ModuleScript intenta require() a otro ModuleScript que a su vez intenta require() a él, el hilo se colgará y nunca se detendrá (las llamadas cíclicas require() no generan errores).¡Tenga en cuenta las dependencias de su módulo en proyectos grandes!
Si un ModuleScript se sube a Roblox y el módulo raíz tiene el nombre establecido en MainModule , se puede subir como modelo y se requiere usando require() con la ID de activo del aplicación de modelado.Entonces se puede cargar en tu experiencia, aunque esta lógica solo funciona en el servidor y fallará en el cliente.Si otros usuarios quieren usar el módulo, debe ser público.
Muestras de código
The code sample starts by creating a local variable holding an empty table. It then fills the table with two placeholder functions, and then finally returns the table. Using this code in a ModuleScript would make the my_functions table (and thus any functions, tables or other values within it) available to any Script, LocalScript or other ModuleScript.
-- Tables store multiple values in one variable
local MyFunctions = {}
-- Add a few functions to the table
function MyFunctions.foo()
print("Foo!")
end
function MyFunctions.bar()
print("Bar!")
end
-- ModuleScripts must return exactly one value
return MyFunctions
This code sample shows how to use the require function on a ModuleScript, then use the value that it returned. See the "Simple ModuleScript Example" for the code to go with this sample.
-- The require function is provided a ModuleScript, then runs
-- the code, waiting until it returns a singular value.
local MyFunctions = require(script.Parent.MyFunctions)
-- These are some dummy functions defined in another code sample
MyFunctions.foo()
MyFunctions.bar()
Resumen
Propiedades
El código que se debe ejecutar.
Propiedades
Source
El código que se debe ejecutar.
Si quieres leer o modificar un script que el usuario tiene abierto, considera usar el ScriptEditorService para interactuar con el editor de scripts en lugar.