Bienvenidos sean a este post, hoy hablaremos sobre los tipos en Lua aunque el lenguaje es de tipo dinamico, esto significa que no es necesario asignar el tipo de variable sino que este se asignara automaticamente en base a la informacion que le asignemos, tambien podemos averiguar cual es el tipo gracias a la funcion type, veamos algunos ejemplos:

Anuncios
tinchicus@dbn001dsk:~/lenguaje/lua$ lua5.3
Lua 5.3.3  Copyright (C) 1994-2016 Lua.org, PUC-Rio
> print(type("Hola, Mundo"))
string
> print(type(print))
function
> print(type(10+2))
number
> print(type(a))
nil
> print(type(true))
boolean
> a=10;
> print(type(a))
number
> a="MHM"
> print(type(a))
string
>

En este caso vemos como dependiendo el valor informado en type nos devolvio distintos valores, otra particularidad es que como dijimos antes los tipos de datos se manejan automaticamente si observamos en el ultimo caso del ejemplo anterior donde modificamos a la variable a, en este caso le asignamos el valor de 10 y si volvemos a usar el type veremos como cambio la salida de nil a number y cuando lo pasamos de 10 al valor de MHM y volvemos a usar type nos devolvera string, vean como no fue necesario reconfigurar nada para cambiar el tipo de informacion, a continuacion hablaremos sobre algunos de los tipos.

NIL

Es un tipo un tanto particular que contiene un solo valor, nil, como dijimos antes este valor es utilizado para indicar que la variable global no tiene asignada ningun valor, equivale a NULL de otros lenguajes, y no utiliza ningun recurso de memoria, y como deduccion podemos decir que es el valor por defecto de toda variable mientras no se le asigne ningun valor o lo mismo que decir que no posee ningun valor (NULL).

Booleans

Al igual que todos los lenguajes este tipo tiene dos valores, true (verdadero) y false (falso), si bien estos valores no son un monopolio de la condicion, dado que podemos usar otros valores, si puede ser usado para indicar que existe o no existe, que esta preparado o no, tambien podriamos considerarlo como un binario siendo uno o cero dependiendo de la situacion.

Anuncios

Numbers

Es el tipo que se usa para manipular los numeros, el verdadero tipo que manipula Lua es real (precision doble y coma flotante), Lua no tiene tipo entero, si bien mucha gente tiene miedo de usar valores de coma flotante porque un simple incremento puede derivar en un error catastrofico, lo particular de usar numero doble es a la hora de redondear no generara inconvnientes, tambien nos permitira manejar cualquier numero entero de 32 bits sin inconvenientes.
En caso de necesitar modificar el tipo de numero a utilizar se puede ir al archivo luaconf.h y modificarlo para el necesario, por ultimo las constantes pueden ser escritas como enteras, con una parte decimal o con un exponente decimal.

Functions

Las funciones son valores de primera clase en Lua, esto significa que las funciones pueden ser almacenadas en variables, pasadas como argumentos a otras funciones, y regresado como resultado, esto nos permite una gran flexibilidad al lenguaje porque nos permite redefinir una funcion para agregar nueva funcionalidad o borrar una funcion para crear un entorno seguro cuando corran un codigo sin confianza, Lua ofrece un buen soporte para programacion funcional, incluyendo funciones anidadas pero de esto hablaremos mas adelante, y sobre todo juega un rol importante en la programacion orientada a objetos para este lenguaje.
Este lenguaje no solamente corre funciones en Lua sino tambien en C, todas las librerias estandar estan escritas en C, algunos de los usos de funciones pueden ser para:

  • Manipulacion de cadenas
  • Manipulacion de tablas
  • Entrada / Salida
  • Acceso a instalaciones basicas del sistema operativo
  • Funciones matematicas
  • Depuracion

Userdata y threads

Userdata, datos del usuario, permite que datos arbitrarios de C puedan ser almacenados en variables de Lua, no tiene operaciones predefinidas en Lua, estos son utilizados para nuevos tipos creados por una aplicacion o una libreria escrita en C, por instancia, la libreria estandar I/O los usa para representar archivos, sobre Userdata y Threads (procesos) lo hablaremos con mas detalle mucho mas adelante.

Anuncios

En resumen, hoy hemos visto algunos de los tipos de datos, como los trabaja Lua, como se modifica dinamicamente, hemos hablado sobre el tipo nil, tambien sobre el boolean, los de tipo numeros, los de tipo funcion y un poco sobre Userdata y Thread, 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.00