Capítulo 3: Variables en PowerShell

Publicado por P. Ruiz en

Cómo establecer el tipo de dato de una variable

En PowerShell existen dos formas de establecer la naturaleza del dato que va a almacenar una variable:

  • Implícita: El tipo de dato que puede almacenar la variable se establece en función del valor asignado .

  • Explícita: El programador establece el tipo de dato que podrá contener la variable. De este modo, cuando asignemos un valor que no coincide con el tipo especificado, PowerShell tratara de amoldarlo a la variable.

Definición implícita:

Como hemos dicho más arriba, el tipo de dato de estas variable se establece en el momento de asignarle valor. De hecho, ya vimos al principio una definición de esta clase:

Scripts-en-PowerShell-Guia-para-principiantes-090

En este caso, la variable $hola se crea en el momento de usarla y se le asigna un valor de tipo texto (al que llamaremos string o cadena de caracteres).

Este método también se utiliza para crear datos de otros tipos. Por ejemplo, en el siguiente ejemplo creamos una variable numérica (en particular, de tipo double):

Scripts-en-PowerShell-Guia-para-principiantes-091

Una variable, cuya definición de tipo se ha realizado de forma implícita, podrá ir cambiando el tipo de dato almacenado según nuestras necesidades. Por ejemplo, después de la línea anterior podríamos escribir lo siguiente si experimentar ningún tipo de error:

Scripts-en-PowerShell-Guia-para-principiantes-092

… Y si lo comprobamos, obtendremos una salida como esta:

Scripts-en-PowerShell-Guia-para-principiantes-093

Definición explícita:

En este caso, informamos a PowerShell del tipo de dato que puede almacenar una variable particular. Al hacerlo, estamos estableciendo un límite en cuanto a la naturaleza de los datos que pueden almacenarse dentro de la variable.

Por ejemplo, como hemos dicho antes, la variable $precio del ejemplo anterior será de tipo double, por lo que ocupará en memoria 64 bits. Si nos parece excesivo este gasto de memoria por la naturaleza de los datos que estamos almacenando, al definir la variable, podemos especificar el tipo de dato al que pertenece. Lo haremos de este modo:

Scripts-en-PowerShell-Guia-para-principiantes-094

Cuando el dato asignado no coincida con el tipo esperado, pueden ocurrir dos cosas:

  • Que las características del dato se modifiquen para amoldarse a la variable.

  • Cuando lo anterior no es posible, se producirá un error. Observa la imagen siguiente si tratamos de repetir ahora el ejemplo anterior:

Scripts-en-PowerShell-Guia-para-principiantes-095

Especificar el tipo de un dato

Otra alternativa que tenemos a nuestra disposición consiste en indicar el tipo al que pertenece el propio dato. De este modo, podríamos lograr las ventajas de las dos opciones anteriores: tener una variable que pueda cambiar su tipo y usar el espacio de memoria adecuado para el dato que estamos guardando. Para hacerlo, bastaría con escribir lo siguiente:

Scripts-en-PowerShell-Guia-para-principiantes-096

Una ventaja añadida es que podemos controlar, de forma estricta, el tipo de valor almacenado. Para entenderlo, observemos el siguiente ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-097

Aunque para nosotros el dato anterior es claramente una fecha, para PowerShell no es más que un texto. De hecho, si mostramos el contenido de variable, obtenemos exactamente lo que asignamos:

Scripts-en-PowerShell-Guia-para-principiantes-098

Sin embargo, cuando especificamos el tipo de dato, éste será asumido por la variable y PowerShell entenderá que se trata de una fecha:

Scripts-en-PowerShell-Guia-para-principiantes-099

La diferencia se aprecia claramente cuando consultamos en contenido de la variable:

Scripts-en-PowerShell-Guia-para-principiantes-100

Cuando amoldamos un dato a un tipo diferente, puede ocurrir que la coincidencia no sea exacta. En este caso, PowerShell tratará de buscar la solución más adecuada. Por ejemplo, cuando escribimos lo siguiente:

Scripts-en-PowerShell-Guia-para-principiantes-101

Obtendríamos un resultado como este:

Scripts-en-PowerShell-Guia-para-principiantes-102

Como puedes comprobar, PowerShell nos ofrece el entero más próximo al valor dado.

Cuando esto no sea posible, sencillamente se producirá un error de ejecución. Por ejemplo, imagina el siguiente caso:

Scripts-en-PowerShell-Guia-para-principiantes-103

El resultado sería este:

Scripts-en-PowerShell-Guia-para-principiantes-104