Menu
Coddy logo textTech

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
end

Esto 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.

challenge icon

Desafío

Fácil

Escribe 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éricos
  • threshold (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
end

Las 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
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Logic & Flow