Funciones anónimas
Parte de la sección Logic & Flow del Journey de Lua de Coddy — lección 13 de 54.
Ahora que entiendes que las funciones pueden almacenarse en variables y pasarse, hay una forma aún más concisa de escribirlas. En lugar de siempre darles un nombre a las funciones, puedes crearlas directamente donde las necesitas—estas se llaman funciones anónimas.
Una función anónima es simplemente una función sin nombre. La defines usando la palabra clave function seguida inmediatamente por sus parámetros y cuerpo:
function(a, b)
return a + b
endEsto crea un valor de función que se puede usar inmediatamente. Las funciones anónimas son particularmente útiles cuando se pasan funciones como argumentos a otras funciones. ¿Recuerdas el ejemplo de ordenación personalizada de antes? Así es como se ve con una función anónima:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)En lugar de definir una función con nombre separada para la comparación, la función se crea directamente como el segundo argumento de table.sort(). Esto hace que el código sea más compacto y mantiene la lógica de ordenación justo donde se usa.
Desafío
FácilEscribe una función filterByThreshold que toma numbers y threshold y devuelve una nueva tabla que contiene solo números mayores que el umbral.
Usa table.insert() con un enfoque de función anónima para filtrar los números. Crea la lógica de filtrado en línea sin definir una función con nombre separada.
Lógica:
- Crea una tabla de resultado vacía
- Itera a través de la tabla de números
- Para cada número, usa una función anónima para verificar si excede el umbral
- Si la verificación devuelve true, agrega el número a la tabla de resultado
- Devuelve la tabla de resultado filtrada
Parámetros:
numbers(table): Una tabla de estilo lista que contiene valores numéricosthreshold(number): El valor mínimo (exclusivo) para filtrar
Devuelve: Una tabla que contiene solo números mayores que el umbral (table)
Hoja de referencia
Una función anónima es una función sin nombre, definida usando la palabra clave function seguida de parámetros y cuerpo:
function(a, b)
return a + b
endLas funciones anónimas son útiles cuando se pasan funciones como argumentos, manteniendo la lógica en línea donde se usa:
local players = {
{name = "Alice", score = 150},
{name = "Bob", score = 200},
{name = "Charlie", score = 175}
}
table.sort(players, function(a, b)
return a.score > b.score
end)Esto crea la función de comparación directamente como un argumento a table.sort(), haciendo el código más compacto.
Pruébalo tú mismo
function filterByThreshold(numbers, threshold)
-- Escribe código aquí
end
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Logic & Flow
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 simple