martes, 8 de octubre de 2013

Tutorial lua en linux(funciones)

Otra parte fundamental en los lenguajes de programación son las funciones,las cuales nos ayudan a no escribir muchas veces el mismo código,como ya hemos visto en lua lo mas básico ahora veremos otra cosa básica como lo son las funciones,antes de entrar en asuntos mas avanzados.

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.

2 comentarios:

  1. Funciones :D!

    Genial!. 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!

    ResponderBorrar
  2. Que bueno ,a difundir lua en linux :D

    ResponderBorrar

Los comentarios serán revisados antes de ser publicados.