Funciones en Lua

Funciones en Lua


En programación una función es un grupo de lineas de código que realizan una tarea especifica. Las funciones son utilizadas para descomponer grandes problemas en tareas simples y para implementar operaciones que son comúnmente utilizadas durante un programa y de esta manera reducir la cantidad de código.

Esto quiere decir que una función puede ser utilizada o invocada varias veces dentro de un mismo programa, ademas permiten recibir datos desde fuera de la función y asi mismo devolver datos.

Definiendo una función en Lua

Para crear una función en Lua, se utiliza la palabra reservada function , la estructura básica es la siguiente:
function nombre_de_la_funcion() -- Cuerpo de la función end
Pero también podemos declarar funciones como si se trataran de variables utilizando la siguiente estructura:
nombre_de_la_función = function() -- Cuerpo de la función end

Funciones con argumentos

Las funciones también pueden recibir argumentos, esto quiere decir que son parámetros o valores de entrada que son enviados hacia la función.
function nombre_de_la_función(argumento1, argumento2) -- Cuerpo de la función end

Retorno de valores

Las funciones también nos pueden devolver datos resultados de su lógica interna, pueden incluso devolver más de un dato, y esto se hace con la palabra reservada return.
function nombre_de_la_función(argumento1, argumento2) -- Cuerpo de la función return valor_a_retornar end

Ejercicio

Imaginemos que queremos realizar un programa que ingrese tres años, y como respuesta dirá que año es bisiesto y cual no, primero miremos como seria el programa sin usar funciones.

Recordemos primero que:
Año bisiesto es el divisible entre 4, salvo que sea año secular -último de cada siglo, terminado en «00»-, en cuyo caso también ha de ser divisible entre 400.
Para mas información puedes consultar año bisiesto en la wikipedia. Ahora si manos a la obra
print("Programa para saber años bisiestos") print("ingrese el año 1") anio1=io.read() print("ingrese el año 2") anio2=io.read() print("ingrese el año 3") anio3=io.read() if (anio1%4 == 0 and anio1%100 ~= 0 ) or (anio1%400 == 0) then print(anio1.." Es bisiesto") else print(anio1.." No es bisiesto") end if (anio2%4 == 0 and anio2%100 ~= 0 ) or (anio2%400 == 0) then print(anio2.." Es bisiesto") else print(anio2.." No es bisiesto") end if (anio3%4 == 0 and anio3%100 ~= 0 ) or (anio3%400 == 0) then print(anio3.." Es bisiesto") else print(anio3.." No es bisiesto") end
Ahora observemos cómo cambia el código al usar funciones
function esBisiesto( a ) if (a%4 == 0 and a%100 ~= 0 ) or (a%400 == 0) then print(a.." Es bisiesto") else print(a.." No es bisiesto") end end print("Programa para saber años bisiestos") print("ingrese el año 1") anio1=io.read() print("ingrese el año 2") anio2=io.read() print("ingrese el año 3") anio3=io.read() esBisiesto(anio1) esBisiesto(anio2) esBisiesto(anio3)
El resultado es el mismo, pero si lo notaste fueron menos lineas de código y todo por implementar una función.

keyword ...

En Conceptos básicos hablamos de los caracteres reservados los cuales no podíamos usar para nombrar un identificador, uno de ellos es ... y hoy veremos su utilidad.

Si declaramos una función con dos argumentos pero le enviamos tres ocurrirá un error en el peor de los casos aunque posiblemente no ocurra nada, si le enviamos solo un argumento, el código se ejecutara pero uno de estos argumentos sera un tipo nil, lo que tal vez no deseemos que ocurra, para solucionar esto Lua usa ...para referirse a parámetros variables (Lo que se entenderá mejor con un Código).

Imaginemos que tenemos una función que imprime 2 nombres
function imprimir(a,b) print(a,b) end imprimir("Ocitronix","Lua")
Si lo ejecutamos nos muestra en pantalla Ocitronix seguido de la palabra Lua, pero que pasa si ahora queremos imprimir más de dos argumentos pero no sabemos cuantos argumentos en total, pues seria tan sencillo como:
function imprimir(...) print(...) end imprimir("Ocitronix","Lua","2018","Enero")

Video

Comentarios

Entradas más populares de este blog

SAFE MODE en PS Vita