History: Básicos de Lua

Revision made 7 years ago by Jakub Janarek. Go to the last revision.

¿Lua? ¿WTF?

AKA otra cosa que estudiar

Lua es un lenguaje muy simple, dinámicamente tipado e interpretado. Por eso, no tiene tipos explícitos (como el "int" o "char" de C++), y no se compila, sino se ejecuta.

Viene genial para hacer juegos simples con Love2d, scripting en juegos complejos como Garry's Mod o LoL, servicios web (OpenResty), e incluso deep learning o simular redes neuronales. En fin, tiene potencial ;)

Dicho esto, empecemos con el lenguaje. Espero que disfrutes y aprendas.

Lo básico de los básicos

Variables, tipos y comentarios

Lua, como todos los lenguajes tiene variables, o cosas a las que asociamos valores con un "=". Estos valores pueden ser de 8 tipos:

  • number o números,
  • strings o cadenas de caracteres,
  • function o funciones, que son bloques de código que manipulan a los objetos y variables cambiando su estado,
  • boolean o variables lógicas true o false (verdadero o falso por si el inglés no es tu fuerte),
  • nil o variable nula, parecida al null de JavaScript o Java,
  • table, que equivale a arrays (o listas de variables) y maps, o listas de pares de llave y valor asociado,
  • thread o hilo del programa, que es una línea de ejecución independiente del código,
  • userdata o la posición de un objeto, por ejemplo una tabla, en la memoria

También podemos comentar código en Lua, para explicar que hace a otros o a nosotros mismos :) con un "--comentario" si el comentario tiene una línea o "--[[comentario]]--" si tiene varias líneas.

No te preocupes si estas cosas te suenan como a chino, ahora verás unos ejemplos.

--esto es un comentario :)

-- declaración de variables:
numero = 43
string = "soy una string"

-- explicaremos las funciones y tablas más adelante
mifuncion = function() return 1 end
unaTabla = {1,2,"bla"}

Volviéndonos posesivos

Estructuras de control: if

Podemos manipular el flujo del programa con los palabrajos for, if, y while. Así, controlamos que bloques de código se ejecutan y cuáles no. Todo este flujo va determinado por ciertas condiciones, las que se nos ocurran oportunas. Sé que parece abstracto, pasemos a la práctica con el if.

if numero == 43 then
  print('soy 43!')

elseif numero ~= 34 then
  print("no soy 34")

-- si no se cumple ninguna condición
else
  print("lo que sea")

end

Como puedes observar, el if...elseif...else es menos peligroso que el Osasuna: solo fíjate que el else no tiene condición asociada, y el bloque acaba con un buen "end". No hace falta que uses elseif y else siempre, si compruebas una condición, entre if y then por cierto, te puede bastar con un solo if. Perfecto, el if lo tenemos cubierto. Pasemos al siguiente, el bucle for.

Estructuras de control temporada 2: for

El for se usa normalmente para moverse por estructuras con varios elementos, tipo cada celda cercana del buscaminas para ver si hay minas o cada entrada en la base de datos de la NSA. Por eso, es bastante útil y no demasiado complicado.

misDolares = 0

for i = 1, 2000 do    -- va de 1 a 2000
  misDolares = misDolares + 1  -- incrementamos la variable en uno
end

-- ¡Ahora tengo 2000 dólares!

El for tiene algo más de chicha, pero no podemos aprovecharla hasta que veamos funciones y tablas. Después de ver el bucle while vamos allá.

Más y mejor control con while

La últma estructura de control, el while bla bla....