Resumen - Manejador de eventos simple
Parte de la sección Lógica y flujo del Journey de Lua de Coddy. Lección 15 de 54.
Desafío
FácilEscribe una función createEventSystem que cree un sistema de eventos sencillo con eventos prerregistrados y active uno según los parámetros de entrada.
Lógica:
- Crea una tabla vacía para almacenar eventos dentro de
createEventSystem - Define una función
registerque recibeeventNameycallback(una función que se ejecutará más adelante, cuando se active el evento) y almacena la función de retorno en la tabla de eventos con el nombre del evento como clave - Define una función
triggerque recibeeventNameyarg, busca la función de retorno en la tabla de eventos y la llama con el argumento si existe - Antes de activar cualquier evento, registra estos tres eventos:
"double": recibe un número y lo devuelve multiplicado por 2"square": recibe un número y lo devuelve elevado al cuadrado"increment": recibe un número y lo devuelve más 1
- Activa el evento especificado por el parámetro
eventNamecon el parámetrovalue - Devuelve el resultado del evento activado o
"Event not found"si el evento no existe
Parámetros:
eventName(cadena): El nombre del evento que se activarávalue(número): El valor que se pasará a la función de retorno del evento
Devuelve:
- El resultado de la función de retorno (número), o
"Event not found"si el evento no existe (número|cadena)
Pruébalo tú mismo
function createEventSystem(eventName, value)
-- Escribe el código aquí
end
Todas las lecciones de Lógica y flujo
1Iteración avanzada de tablas
Iterar con pairs()Iterar con ipairs()pairs() vs. ipairs()Resumen - Ficha de personaje2Más funciones de la librería table
table.concat()Construcción de tablas y unpack()table.sort()Ordenamiento personalizado con funcionesRepaso - Tabla de puntuaciones altas3Conceptos avanzados de funciones
Retorno de múltiples valoresFunciones variádicas (...)Funciones como valores de primera claseFunciones anónimas¿Qué es un Closure?Resumen - Manejador de eventos simplePractica por tu cuenta: Compilador de Lua online