¿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....