Está en la página 1de 3

TEMA

about_Switch
DESCRIPCIN BREVE
Explica cmo se utiliza una instruccin Switch para administrar varias
instrucciones If.
DESCRIPCIN DETALLADA
Una instruccin if permite tomar una decisin en un script o un
programa. Bsicamente, esta instruccin dice: "Si se cumple esta
condicin, realice esta accin. En caso contrario, realice esta
otra". Puede llevar a cabo esa operacin tantas veces como desee,
pero si las condiciones son muchas, una instruccin If resulta
poco manejable. Puede combinar una larga lista de condiciones en una
instruccin Switch. Como en todas las instrucciones de bifurcacin,
los bloques de script deben escribirse entre llaves ({}).
En realidad, una instruccin Switch es una serie de instrucciones
If. Comprueba si la expresin coincide con cada una de las condiciones,
caso por caso. Si encuentra una coincidencia, se realiza la accin
asociada a dicha condicin. Una instruccin Switch bsica tiene el
siguiente formato:
PS> $a = 3
PS> switch
1 {"Es
2 {"Es
3 {"Es
4 {"Es
}

($a) {
el nmero
el nmero
el nmero
el nmero

uno."}
dos."}
tres."}
cuatro."}

Es el nmero tres.
En este sencillo ejemplo se toma un valor y se compara con cada
condicin de la lista. La accin repite una cadena de la
coincidencia. Pero podra tener un problema si activa todas las
condiciones. Por ejemplo:
PS> $day = "day5"
PS> switch ($day){
day1 {"Lunes"; break}
day2 {"Martes"; break}
day3 {"Mircoles"; break}
day4 {"Jueves"; break}
day5 {"Viernes"; break}
day6 {"Sbado"; break}
day7 {"Domingo"; break}
day5 {"Demasiados das"; break}
}
Viernes
La lista contiene dos condiciones day5. Sin embargo, la
instruccin break al final de cada condicin indica a la
instruccin switch que deje de buscar ms adelante y realice la
accin que encuentre. Si se quitaran las instrucciones break,
se realizaran ambas acciones day5.

Si el valor al que se aplica la instruccin switch es una matriz,


se evaluar cada elemento en orden, comenzando por el elemento 0
(cero). Debe haber al menos un elemento que cumpla como mnimo
una condicin; de lo contrario, se generar un error. Si hay ms
de una clusula predeterminada, se producir un error.
La sintaxis completa de la instruccin switch es la siguiente:
switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline )
O bien
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
seguido de
{
"cadena"|number|variable|{ expression } { statementlist }
default { statementlist }
}
De forma predeterminada, si no se usan parmetros, la instruccin
Switch se comporta como si hubiera una coincidencia exacta sin
distincin entre maysculas y minsculas. Si el resultado de
"pipeline" es una matriz, cada elemento de la matriz se evaluar
en orden de desplazamiento ascendente (empezando por 0 [cero]).
El bloque de cdigo de la instruccin Switch debe contener un elemento
condicional como mnimo, y solo puede haber una clusula
predeterminada. Si hay ms de una clusula predeterminada,
se producir una excepcin ParseException.
La instruccin Switch tiene los parmetros siguientes:
Regex

Indica que la clusula de coincidencia,


si es una cadena, se trata como una cadena regex.
El uso de este parmetro deshabilita Wildcard y Exact.
Si la clusula de coincidencia no es una cadena,
se omite este parmetro.

Wildcard

Indica que la clusula de coincidencia, si es una cadena,


se trata como una cadena comodn. El uso de este parmetro
deshabilita Regex y Exact. Si la clusula de coincidencia
no es una cadena, se omite este parmetro.

Exact

Indica que la clusula de coincidencia, si es una cadena,


debe coincidir exactamente. El uso de este parmetro
deshabilita Wildcard y Regex. Si la clusula de coincidenc

ia
no es una cadena, se omite este parmetro.
CaseSensitive

Modifica la clusula de coincidencia, si es una cadena,


para que distinga entre maysculas y minsculas.
Si la clusula de coincidencia no es una cadena,
se omite este parmetro.

File

Obtiene la entrada de un archivo (o representante) en lu

gar
de una instruccin. Si hay varios parmetros File, se usa

el ltimo. Cada lnea del archivo se lee y se recorre


por el bloque de la instruccin switch.
Se permite el uso de varios parmetros Regex, Wildcard o Exact.
Sin embargo, solo el ltimo parmetro utilizado rige el comportamiento.
La palabra clave Break indica que no se contina el procesamiento
y que la instruccin Switch se cerrar.
La palabra clave Continue indica que no se contina el procesamiento
respecto al smbolo (token) actual y que se evaluar el siguiente
smbolo de la condicional. Si no hay ningn smbolo disponible,
la instruccin Switch se cerrar.
El bloque "{ expression }" puede ser un bloque de cdigo que se
evaluar en el momento de la comparacin. El objeto actual est
enlazado a la variable automtica $_ y est disponible durante la
evaluacin de la expresin. Una comparacin se considera una
coincidencia si la expresin se evala como "True". Esta
expresin se evala en un nuevo mbito.
La palabra clave "Default" de la instruccin switch indica que si
no se encuentran coincidencias, se evaluar el bloque de cdigo
que sigue a la palabra clave. No se permitir el flujo del
programa de un bloque a otro porque la llave de cierre ( } ) en
la lista compuesta es una instruccin break explcita.
Si se encuentran varias coincidencias, cada una de ellas dar
lugar a la ejecucin de la expresin. A fin de evitar esto,
pueden usarse las palabras clave Break o Continue para detener las
comparaciones.
VEA TAMBIN
about_Break
about_Continue
about_If
about_Script_Blocks

También podría gustarte