Para empezar las funciones en lua se definen con la palabra especial:
function
Y su bloque se define desde que empieza hasta la palabra especial:
end
En lua pasamos los argumentos en la creación de la función encerrados en paréntesis:
(arg1,arg2,etc)
En lua podemos definir el nombre de una funcion de dos maneras,la primera es la mas común vista en muchos lenguajes,el nombre de la funcion después de la palabra especial que la inicia,en este caso function:
function suma(x,y)
-- bloque
end
La otra manera es al estilo javascript,bueno casi,lo que se hace es hacer que una variable sea igual a una función:
suma = function(x,y)
-- bloque
end
La forma de llamarlas es con el nombre de las mismas seguidas de los parámetros:
Por ejemplo
suma(1,2)
O por ejemplo:
saluda = function(nombre) print("Hola "..nombre) end
saluda("Linux")
Otra cosa importante es el retorno de un valor,en lua no necesitamos definir que tipo de valor retornara,cuanto una funcion encuentre la palabra return terminara la funcion,con la palabra return podemos crear variables basadas en operaciones de funciones:
suma = function(x,y) return x+y end
resta = function(x,y) return x-y end
var1 = 10
var2 = 10
num = suma(var1,var2)
print(num)
En este caso sumamos el valor de dos variables sin cambiarlas.
En lua todas las variables son globales a menos que se use la palabra especial:
local
Veamos un ejemplo:
variable_global = 10
function ver(x)
local variable_local_fun = 10
print("Dentro de funsion")
print("Variable local de funcion "..variable_local_fun)
print("Variable global "..variable_global)
print("Variable pasada como parametro,local del archivo "..x)
glo = 100 -- Creamos variable global desde funcion
end
local variable_local = 20
ver(variable_local)
print("Fuera de la funsion")
print("Variable local "..variable_local)
print("Variable global "..variable_global)
print("Variable global creada en funsion "..glo)
-- variable_local_fun -- No existe aqui
Eso nos muestra un ejemplo de como lua maneja los ámbitos,cuando veamos como crear módulos y clases nos introduciremos mas en el tema.
Otra cosa importante que se debe aprender es a pasar o desde la función a recibir un numero de argumentos no definidos,por ejemplo:
llamamos_funcion(1,2,4,5,6,7,6,4,3,etc)
Digamos que no sabemos el numero de argumentos,como podríamos trabajarlos dentro de la funcion,es fácil solo tenemos que recibirlos desde la función con el parametro especial de tres puntos:
function(arg,...)
No es necesario el primer argumento,ya que podemos hacer esto:
function(...)
Para desempaquetar los argumentos pasados al llamar la funsion y poder usarlos,podemos meterlos en una tabla asi:
argumentos = {...}
Veamos un ejemplo:
function opera(op,...)
t = {...}
local num = 0
if op == "+" then
for i=1,#t do num = num + t[i] end
return num
else
print("Operacion no permitida")
end
end
n = opera("+",23,45,4546,6346,436)
print(n)
Por ultimo tenemos la recursividad,que es cuando una funsion se llama a si misma,podemos ver el clasico ejemplo factorial:
function factorial(x)
if x == 1 then
return 1
end
return x * factorial(x-1)
end
Eso es todo,sobre las funciones esto es todo,cuando veamos modulos o clases las usaremos mas pero para un uso normal es todo :D.
Funciones :D!
ResponderBorrarGenial!. Haciendo eco de tus tutoriales en Lua, decidi lanzarme a la piscina y redactar unos cuantos en base a los tuyos en mi Blog :D!.
Chaao!
Que bueno ,a difundir lua en linux :D
ResponderBorrar