⚒️Funciones

3.1. Declaración y uso de funciones 🔧

Las funciones en LUA son bloques de código reutilizables que se pueden definir y llamar en cualquier parte de tu programa.

3.1.1. Función básica

Se puede definir una función usando la palabra clave function, seguida del nombre de la función y sus parámetros opcionales.

function saludar()
    print("¡Hola, mundo!")
end

saludar()  -- Llamada a la función, Salida: ¡Hola, mundo!

3.1.2. Función con parámetros

Las funciones pueden aceptar parámetros para procesar datos.

function saludar(nombre)
    print("¡Hola, " .. nombre .. "!")
end

saludar("Laura")  -- Salida: ¡Hola, Laura!

3.1.3. Función con valores de retorno

Las funciones pueden devolver valores utilizando la palabra clave return.

function sumar(a, b)
    return a + b
end

local resultado = sumar(3, 4)
print("Resultado: " .. resultado)  -- Salida: Resultado: 7

3.2. Funciones anónimas (Lambdas) 🕶️

En LUA, las funciones pueden ser anónimas, es decir, no tienen un nombre asignado.

local miFuncion = function(a, b)
    return a * b
end

local resultado = miFuncion(3, 4)
print("Resultado: " .. resultado)  -- Salida: Resultado: 12

Las funciones anónimas son útiles para pasarlas como argumentos a otras funciones.

function operar(a, b, operacion)
    return operacion(a, b)
end

local suma = operar(5, 6, function(x, y) return x + y end)
print("Suma: " .. suma)  -- Salida: Suma: 11

3.3. Ámbito y alcance de las variables (scope) 🌍

Las variables en LUA pueden tener un alcance local o global dependiendo de cómo se declaren.

3.3.1. Variables locales

Las variables locales solo están disponibles dentro del bloque donde se declaran.

function ejemplo()
    local x = 10  -- Variable local
    print(x)      -- Salida: 10
end

ejemplo()
print(x)  -- Error: x no está disponible fuera de la función

3.3.2. Variables globales

Si una variable se declara sin la palabra clave local, es global y accesible desde cualquier parte del programa.

y = 20  -- Variable global

function ejemplo()
    print(y)  -- Salida: 20
end

ejemplo()
print(y)  -- Salida: 20

3.4. Funciones de orden superior 🚀

Las funciones de orden superior son funciones que pueden aceptar otras funciones como argumentos o devolver funciones.

3.4.1. Pasar funciones como parámetros

function ejecutar(func)
    func()
end

ejecutar(function() print("Función anónima ejecutada") end)

3.4.2. Devolver funciones

Una función puede devolver otra función.

function multiplicador(n)
    return function(x)
        return x * n
    end
end

local porDos = multiplicador(2)
print(porDos(5))  -- Salida: 10

Última actualización