Menu
Coddy logo textTech

Funciones como valores de primera clase

Parte de la sección Logic & Flow 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 dato. 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 como cualquier función regular. Esto abre posibilidades poderosas para la forma en que estructuras tu código.

Las funciones también pueden pasarse como argumentos a otras funciones. Esto es particularmente útil cuando quieres que una función utilice 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 su parámetro y la llama. La función sayHello se pasa de la misma manera que pasarías un número o una cadena.

Las funciones incluso pueden devolver otras funciones. Esto te permite crear funciones dinámicamente basándote en 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 reciba 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 será llamada 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)

Hoja de referencia

En Lua, las funciones son valores de primera clase que pueden almacenarse en variables, pasarse como argumentos y devolverse desde otras funciones.

Almacenar una función en una variable:

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

greet()  -- Salida: Hello!

Pasar una función como argumento:

function executeAction(action)
    action()
end

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

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

Devolver una función desde otra función:

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

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

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 Logic & Flow