Menu
Coddy logo textTech

Funciones como valores de primera clase

Parte de la sección Lógica y flujo de control del Journey de Lua de Coddy. Lección 12 de 54.

En Lua, las funciones son más que simples bloques de código que realizan tareas. Son valores que pueden tratarse como cualquier otro tipo de datos. Esto significa que puedes trabajar con funciones de la misma manera que trabajas con números, cadenas o tablas.

Puedes almacenar una función en una variable:

local greet = function()
    print("Hello!")
end

greet()  -- Salida: Hello!

Aquí, la función se asigna a la variable greet, y puedes llamarla igual que a cualquier función normal. Esto abre posibilidades muy potentes para estructurar tu código.

Las funciones también se pueden pasar como argumentos a otras funciones. Esto resulta especialmente útil cuando quieres que una función use el comportamiento definido en otra:

function executeAction(action)
    action()
end

local sayHello = function()
    print("Hello from a function!")
end

executeAction(sayHello)  -- Salida: Hello from a function!

En este ejemplo, executeAction recibe una función como parámetro y la llama. La función sayHello se pasa igual que pasarías un número o una cadena.

Las funciones incluso pueden devolver otras funciones. Esto te permite crear funciones dinámicamente según ciertas condiciones o parámetros:

function createMultiplier(factor)
    return function(number)
        return number * factor
    end
end

local double = createMultiplier(2)
print(double(5))  -- Salida: 10
challenge icon

Desafío

Fácil

Escribe una función applyOperation que tome a, b y operation, y devuelva el resultado de aplicar la función de operación a los dos números.

El parámetro operation es una tabla que contiene una función que se llamará con a y b como argumentos.

Lógica:

  • Extrae la función de la tabla operation usando la clave "func"
  • Llama a esa función con a y b como argumentos
  • Devuelve el resultado

Parámetros:

  • a (number): Primer número
  • b (number): Segundo número
  • operation (table): Una tabla que contiene una función almacenada en la clave "func"

Devuelve: El resultado de llamar a la función de operación con a y b (number)

Pruébalo tú mismo

function applyOperation(a, b, operation)
    -- Escribe el 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 Lógica y flujo de control

Practica por tu cuenta: Compilador de Lua online