Las variables representan un espacio donde alojar información temporalmente para ello un computador debe saber previamente el tipo de dato que va a alojar razón por la cual las variables tienen por lo general un tipo que determina el valor (o valores) que pueden ser almacenados en dicha variable -espacio de memoria-.Para declarar variables en Boo se necesita especificar el tipo de dato de la variable y se logra escribiendo el nombre de la variable acompañado del tipo de dato, con la palabra clave as en medio, como vemos en la siguiente línea:
>>> variable1 as int
Como ves hemos declarado una variable (llamada variable1) y le hemos dicho que es del tipo entero. Ahora si bien una variable debe ser declarada y definida, es decir que primero debemos decir del tipo que va a ser (para que reserve la memoria y como ya hemos visto) luego cuando la usemos debemos darle un valor acorde a lo declarado (un valor que ocupe el espacio reservado).
>>> variable1 as int >>> variable1 = 1223 // falla si le asignas 12.34
Se genera un error si el valor que le asignas no es el indicado al momento de la declaracion, además de un dato adicional al momento de declarar una variable de un tipo de dato, en algunos tipos de datos el solo declarar una variable también inicializa la variable (de ser entero la variable tiene un valor de cero hasta que se le asigne su valor). En Boo adicionalmente se puede simplificar los dos pasos (declarar y asignar un valor) con solo definirlo, es decir darle el valor, con lo cual la variable que es el receptor del valor asume el tipo más alto por el que pueda declararse, entonces Las variables son creadas con el solo hecho de asignarle valores, ellos toman el tipo de dato de la expresión de asignación sin embargo eso no evita que podemos declarar un tipo de dato explicítamente.
>>> z = 1.2 // definiendo un tipo de dato de punto flotante >>> 2 * z + 1 // >>> s = "Hello, World!" // Se ha declarado una cadena de texto >>> s = 10 // Esto genera un error
La última línea genera un error ya que se quiere asignar un valor distinto a la que la variable ha sido declarada.
En muchos lenguajes de programación se provee de un mecanismo para la declaración variables e inclusión de su valor -la iniciación-, está provee a los desarrolladores la facilidad de que al declarar variables se le pueda asignar un valor en la misma sentencia.
>>> b as int = 1 // al igual que en C o C# int b = 1;
Existen cosas especiales con respecto a la declaración, definición o iniciación de variables en Boo como el que una sola variable puede ser declarada por línea, y con respecto a la definicion es lo mismo, aunque puedes hacer cosas como el segundo ejemplo, y si dos variables tienen el mismo valor inicial, puedes definirlos en la misma linea (tercer ejemplo):
>>> i as int, j as int // produce un error al declararlos >>> b = 2, c = 0 // parecen ser dos definiciones de enteros >>> e = f = 1.5 >>> b // en realidad es un arreglo
Las variables (incluyendo las de tipos explícitos) son declaradas dentro de métodos, propiedades o indexadores o donde quieras ser específicamente claro del tipo de dato que la variable será (ejemplo: clases con campos). y como vimos una declaración pura no necesita de un valor inicial.
>>> class MiClase: ... xx as double = 0 // se pone el valor que no es un requísito ... s as string
› ¿ Qué tipos de datos estan presentes en Boo ?.
Boo, es un lenguaje con tipos de datos estáticos (tipificado), pero ha diferencia de muchos otros lenguajes con soporte para tipos de datos estáticos, posee de un característica que permite hacer uso de un tipo de dato dinámico (duck type).
El uso de tipos estáticos no es obligatorio, solo recomendado con la posibilidad de obviarlos es decir que su declaracion no es un requisito para trabajar en Boo, posee además la inferencia de tipos, donde la asignación del tipo de dato es implícita.
>>> a as int = 1 >>> b = 1 >>> c = System.Int32() // El valor es cero
Como vemos en todos los casos se ha definido un entero pero en el segundo caso no le hemos dicho a Boo el tipo sino lo hemos definido, y en el tercero se ha usado la clase System.Int32, y se instanciado a una variable; pero los enteros no son los únicos tipos de datos presentes sino tenemos tipos de datos de punto flotante (para cálculos un poco más exactos), cadenas de texto, datos lógicos (booleanos) y el tipo de datos dinámico, proporcionados por Boo de forma nativa para ser compatibles con el CTS, un tipo de dato para objetos génericos object y además están los tipos de datos que accedemos por medio de referencia a la libreria System.
>>> m = 0.023 >>> d as float = 2.3e10 >>> t = 5f // El f le da el tipo flotante Single >>> >>> s = "Sin declaración solo con definición" >>> sVacio = System.String.Empty // importar de System.String >>> >>> verdadero as bool // es falso por defecto >>> flag_ = true //Dynamic es solo duck typing >>> >>> obj_generico as object = 1 // pseudo dinámico >>> obj_generico = "uno" >>> >>> contenedor as duck = "un texto" >>> contenedor = 12 // como es dinámico, no hay error
Existen además de los clásicos tipos de datos, la definición de algunos tipos de datos extra que en su mayoria de casos son colecciones como definir una lista ( l = [] ), un diccionario ( d = {} ) o expresiones regulares, pero además podemos echar mano de las coleeciones definidas en System.Collections.
>>> List1 = [1, 2, 3]
>>> Hash1 = { "Juan": "estudiante", "Maria" : "Docente"}
>>> @/expr/.GetType() // Es una expresion regular
>>> array1 = (1, )
>>> array1_variado = (2, "2", 'dos', 'II')
>>> import System.Collections
>>> pila1 = Stack()
>>> pila1.Push(1)
>>> pila1.ToArray()[0] //imprime el primer elemento de la pila

Discussion
No comments yet.