Las funciones son bloques de código reutilizables que realizan una tarea específica. En Lua, las funciones son ciudadanos de primera clase, lo que significa que pueden ser almacenadas en variables, pasadas como argumentos y devueltas por otras funciones. En esta sección, aprenderemos cómo definir, llamar y utilizar funciones en Lua.
Definición de Funciones
Para definir una función en Lua, utilizamos la palabra clave function
seguida del nombre de la función, una lista de parámetros entre paréntesis y el cuerpo de la función entre end
.
Ejemplo Práctico
En este ejemplo, hemos definido una función llamada suma
que toma dos parámetros a
y b
, y devuelve su suma. Luego, llamamos a la función con los argumentos 3
y 4
, y mostramos el resultado.
Funciones Anónimas
Las funciones en Lua también pueden ser anónimas, es decir, no tienen un nombre asociado. Estas funciones se pueden asignar a variables o pasar como argumentos a otras funciones.
Ejemplo Práctico
En este ejemplo, hemos asignado una función anónima a la variable multiplicar
y luego la hemos llamado con los argumentos 3
y 4
.
Funciones como Primeras Clases
Como se mencionó anteriormente, las funciones en Lua son ciudadanos de primera clase. Esto significa que pueden ser manipuladas como cualquier otro valor.
Ejemplo Práctico
function aplicarOperacion(a, b, operacion) return operacion(a, b) end local suma = function(a, b) return a + b end local resultado = aplicarOperacion(5, 7, suma) print(resultado) -- Salida: 12
En este ejemplo, hemos definido una función aplicarOperacion
que toma dos números y una función de operación como argumentos. Luego, hemos definido una función suma
y la hemos pasado como argumento a aplicarOperacion
.
Funciones Recursivas
Las funciones en Lua pueden ser recursivas, es decir, pueden llamarse a sí mismas. Esto es útil para resolver problemas que pueden dividirse en subproblemas más pequeños.
Ejemplo Práctico
function factorial(n) if n == 0 then return 1 else return n * factorial(n - 1) end end print(factorial(5)) -- Salida: 120
En este ejemplo, hemos definido una función factorial
que calcula el factorial de un número n
de manera recursiva.
Ejercicios Prácticos
Ejercicio 1: Función de Potencia
Escribe una función llamada potencia
que tome dos argumentos base
y exponente
, y devuelva base
elevado a la exponente
.
function potencia(base, exponente) local resultado = 1 for i = 1, exponente do resultado = resultado * base end return resultado end print(potencia(2, 3)) -- Salida: 8
Ejercicio 2: Función de Máximo Común Divisor (MCD)
Escribe una función llamada mcd
que tome dos argumentos a
y b
, y devuelva su máximo común divisor utilizando el algoritmo de Euclides.
function mcd(a, b) while b ~= 0 do local temp = b b = a % b a = temp end return a end print(mcd(56, 98)) -- Salida: 14
Resumen
En esta sección, hemos aprendido sobre las funciones en Lua, incluyendo cómo definirlas, llamarlas y utilizarlas de manera efectiva. También hemos explorado funciones anónimas, funciones como ciudadanos de primera clase y funciones recursivas. Finalmente, hemos reforzado estos conceptos con ejercicios prácticos.
En el próximo módulo, profundizaremos en las tablas, una de las estructuras de datos más importantes en Lua.
Curso de Programación en Lua
Módulo 1: Introducción a Lua
Módulo 2: Conceptos Básicos
Módulo 3: Conceptos Intermedios
Módulo 4: Conceptos Avanzados
- Corutinas
- Programación Orientada a Objetos en Lua
- Técnicas de Depuración
- Optimización del Rendimiento
- Uso de la API C de Lua
Módulo 5: Aplicaciones Prácticas
- Construcción de un Juego Simple
- Scripting en Motores de Juegos
- Automatización de Tareas con Lua
- Integración de Lua con Otros Lenguajes