Capítulo 5: Estructuras condicionales

Uso de la orden switch

La orden switch es una alternativa a if para los casos en los que tenemos una gran cantidad de opciones.

Scripts-en-PowerShell-Guia-para-principiantes-151

Dentro del paréntesis que acompaña a la orden switch deberemos incluir una variable o una expresión. A continuación, incluiremos los posibles resultados y, junto a cada uno de ellos, el bloque de instrucciones que deben ejecutarse si dicho valor coincide con el resultado de evaluar la variable o expresión de switch.

Si no coincide ninguno de los patrones, de forma opcional, podemos incluir la cláusula default con un bloque que se ejecutará por defecto.

Observa que, además de la pareja de llaves que engloba cada bloque de código, existe una pareja de llaves que engloba la estructura completa.

Veamos un ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-171

El resultado sería este:

Scripts-en-PowerShell-Guia-para-principiantes-172

Una de las características que diferencian a switch de if es que, en este caso, siempre se evalúan todos los patrones. Por ejemplo, observa el siguiente ejemplo en el que hemos repetido el valor 2:

Scripts-en-PowerShell-Guia-para-principiantes-173

Comprobamos que las condiciones no dejan de evaluarse después de la primera coincidencia:

Scripts-en-PowerShell-Guia-para-principiantes-174

Incluso podemos evaluar diferentes variables o expresiones al mismo tiempo. Sólo tenemos que incluirlas separadas por comas:

Scripts-en-PowerShell-Guia-para-principiantes-175

Observa que PowerShell ha encontrado dos coincidencias (una por cada variable):

Scripts-en-PowerShell-Guia-para-principiantes-176

Cuando necesitemos que, tras evaluar un determinado bloque, no se continúe evaluando ningún otro, podemos utilizar la orden break. Observa lo que pasa cuando la incluimos en el ejemplo anterior:

Scripts-en-PowerShell-Guia-para-principiantes-177

En el ejemplo, al evaluar el valor 2, ejecuta la orden break y se interrumpe la ejecución de switch:

Scripts-en-PowerShell-Guia-para-principiantes-178

Cuando hay más de dos instrucciones en un mismo bloque, lo normal es escribirlas en varias líneas (como hemos hecho en el ejercicio anterior. Sin embargo, también tenemos la opción de escribirlas en la misma línea separándolas con un punto y coma (;):

Scripts-en-PowerShell-Guia-para-principiantes-179

También es frecuente que el valor del patrón pueda obtenerse de una expresión más compleja pero, para que la sintaxis sea correcta, dicha expresión también debe incluirse en una pareja de llaves. En estos casos, el bloque de código se ejecutará cuando el resultado de la expresión sea $true. Veamos un ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-180

Al ejecutarlo, obtendríamos algo como esto:

Scripts-en-PowerShell-Guia-para-principiantes-181

Observa que, dentro de la expresión, el símbolo $_ está representado el resultado de evaluar la variable contenida en switch.

Por último, existen algunos modificadores que nos permiten actuar sobre la variable o expresión contenida en el switch:

Scripts-en-PowerShell-Guia-para-principiantes-184

Veamos un ejemplo:

Scripts-en-PowerShell-Guia-para-principiantes-182

Al probarlo, obtendríamos algo así:

Scripts-en-PowerShell-Guia-para-principiantes-183