Bienvenidos sean a este post, hoy hablaremos sobre una de las partes fundamentales en todo lenguaje como son las funciones (tambien pueden ser llamadas metodos), en Lua las funciones son los mecanismos para la abstraccion de declaraciones y expresiones, las funciones pueden ser la encargada de cargar una tarea (tambien conocido como subrutina o procedimiento) o procesar y devolver un valor, para el primer caso usamos la llamada a la funcion como una declaracion para el segundo caso lo usamos como una expresion, veamos algunos ejemplos:
print(8*9, 9/8) a = math.sin(3) + math.cos(10) print(os.date())
Estos son algunos casos de como se puede usar una o varias funciones, en todos los casos utilizamos los parentesis para almacenar los argumentos, en el caso de no ser necesario enviar un argumento simplemente lo dejamos vacio, como se ve en el tercer caso, pero esta forma de trabajar tiene una excepcion: si tenemos un solo argumento y este es un literal nosotros podemos omitir los parentesis, veamos algunos casos:
print "Hola, Mundo" <==> print("Hola, Mundo")
dofile 'break.lua' <==> dofile('break.lua')
print[[ un mensaje <==> print([[ un mensaje
multilinea ]] multilinea ]])
f{x=10, y=20} <==> f({x=10, y=20})
type{} <==> type({})
Otra forma de sintaxis es por medio del operator de funciones (:), es decir nosotros podemos llamar a una funcion de esta forma:
o:foo(0, x) o.foo(0.x)
En ambos casos es equivalente pero esta mas orientado a llamadas orientadas a objetos pero no se preocupen por esto porque lo veremos mas adelante cuando hablemos de la programacion orientada a objetos, mientras tanto prosigamos.
Lua nos permite usar una funcion definida en Lua, o en C, aunque tambien puede utilizar cualquier otro lenguaje dentro del host, ya que todas las librerias de Lua estan escritas en C pero esto no afecta a los programadores de Lua ya que a la hora de llamar a una funcion no hay diferencia entre una definida por Lua u otra definida por C, en el post anterior vimos un ejemplo de funcion pero ahora hablaremos un poco mas sobre su sintaxis basica:
function nombreFuncion([argumentos]) ... instrucciones ... end
En este caso tenemos una sintaxis muy basica, primero va la palabra function, esta es la encargada de informarle a Lua que es una funcion, luego va el nombre de la funcion con la cual la identificaremos, nuestro tema son los argumentos, esta es la posibilidad que tenemos de recibir informacion o no en nuestra funcion, este elemento es opcional y puede usarse o no, luego tendremos el bloque con todas las instrucciones de nuestra funcion y por ultimo lo cerraremos con un end, los argumentos si son utilizados trabajan como variables locales y una vez finalizado nuestra funcion desapareceran salvo que los devolvamos con return, para entender mejor el concepto hagamos el siguiente ejemplo:
funcion.lua
tabla={}
function llenarTabla(x)
for i=1,x do
tabla[i] = i * 2
end
end
function obtenerTabla()
for i=1,#tabla do
print("Posicion " .. i .. ": " .. tabla[i])
end
end
print("Ingresa la cantidad de elementos de la tabla: ")
x = io.read()
llenarTabla(x)
obtenerTabla()
En este ejemplo primero crearemos una tabla vacia, luego vamos a crear dos funciones, una para llenar la tabla y otra para recuperar dicha informacion, hablemos primero de la funcion llenarTabla, en este caso recibira un argumento cuyo nombre sera x, luego usaremos un bucle for donde el limite sera el valor informado en x, y en el bloque usaremos a i como posicion en tabla y luego le agregaremos el valor de i multiplicado por 2, una vez terminado el bucle sale de la funcion, nuestra siguiente funcion sera obtenerTabla la cual no llevara ningun argumento y tambien poseera un bucle for donde comenzara con una variable i y el limite sera establecido por el operador de longitud en tabla, despues usaremos un print para obtener todos los valores de tabla, una vez terminado saldra de la funcion, con esto solo tendremos las funciones.
Pasemos al programa, primero mostraremos un texto y luego usaremos una variable llamada x en el cual ingresaremos un valor, despues llamaremos al metodo llenarTabla y el argumento informado sera el valor de x, una vez terminado procederemos a llamar obtenerTabla para obtener los resultados almacenados en la misma, probemos el programa para ver su salida
En este caso tenemos tres salidas de prueba, donde probamos varias cantidades y en todas funciono correctamente.
En resumen, hoy hemos visto como son las funciones, para que se usan, su sintaxis, que posibilidades nos crea, sus compatibilidades, vimos un ejemplo donde se puede observar sus dos sintaxis, tambien hemos visto como llamar a las funciones, espero les haya sido util sigueme en Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Tambien podes donar
Es para mantenimiento del sitio, gracias!
$1.50