RUBRIQUE
about_Switch
DESCRIPTION COURTE
Explique comment utiliser une instruction switch pour gérer plusieurs
instructions If.
DESCRIPTION LONGUE
Vous utilisez une instruction If pour prendre une décision dans
un script ou un programme. Pour l'essentiel, elle dit " Si cette
condition existe, exécuter cette action. Sinon, exécuter cette
autre action ". Vous pouvez exécuter cette opération autant de
fois que vous le souhaitez, mais avec une longue liste de
conditions, une instruction If devient peu pratique. Vous pouvez
combiner une longue liste de conditions dans une instruction
switch. Comme dans toutes les instructions de création de
branches, des accolades ({}) doivent entourer les blocs de script.
Une instruction switch est, dans le fond, une série d'instructions
If. Elle fait correspondre l'expression à chacune des conditions
au cas par cas. Si une correspondance est trouvée, l'action associée
à cette condition est exécutée. L'instruction switch de base prend
la forme suivante :
PS> $a = 3
PS> switch ($a) {
1 {"c'est un."}
2 {"c'est deux."}
3 {"c'est trois."}
4 {"c'est quatre."}
}
C'est trois.
Cet exemple simple prend une valeur et la compare avec chaque
condition de la liste. L'action répète une chaîne de la
correspondance. Mais vous pourriez rencontrer un problème
si vous vérifiiez toutes les conditions. Par exemple :
PS> $day = "jour5"
PS> switch ($day){
jour1 {"Lundi"; break}
jour2 {"Mardi"; break}
jour3 {"Mercredi"; break}
jour4 {"Jeudi"; break}
jour5 {"Vendredi"; break}
jour6 {"Samedi"; break}
jour7 {"Dimanche"; break}
jour5 {"Trop de jours"; break}
}
Vendredi
Il y a deux conditions jour5 dans la liste. Mais la présence de
" break " à la fin de chacune d'entre elles indique à l'instruction
switch d'arrêter la recherche et d'effectuer l'action qu'elle trouve.
Si les instructions break n'étaient pas là, les deux actions jour5
seraient exécutées.
Si la valeur à laquelle appliquer switch est un tableau, chaque
élément du tableau sera évalué dans l'ordre, en commençant à
l'élément 0 (zéro). Au moins un élément qui remplit la condition
doit être présent, faute de quoi une erreur est générée. S'il
existe plusieurs clauses par défaut, une erreur est générée.
La syntaxe complète de switch est la suivante :
switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline )
ou
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
suivi de
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Par défaut, si aucun paramètre n'est utilisé, l'instruction
switch se comporte comme si une correspondance sans respect de la
casse était appliquée. Si le " pipeline " donne un tableau,
chaque élément du tableau sera évalué par ordre croissant d'offset (en
commençant à 0 [zéro]).
Un élément conditionnel au moins doit être présent dans le bloc
de code de l'instruction switch et une seule clause par défaut
peut être présente. Si plusieurs clauses par défaut sont
présentes, une exception ParseException est levée.
Les paramètres de l'instruction switch sont les suivants :
Regex Indique que la clause de correspondance,
s'il s'agit d'une chaîne, est traitée comme
une chaîne regex. L'utilisation de ce paramètre
désactive Wildcard et Exact. Si la clause
de correspondance n'est pas une chaîne,
ce paramètre est ignoré.
Wildcard Indique que la clause de correspondance,
s'il s'agit d'une chaîne, est traitée comme
une chaîne contenant un caractère générique.
L'utilisation de ce paramètre désactive Regex
et Exact. Si la clause de correspondance
n'est pas une chaîne, ce paramètre est ignoré.
Exact Indique que la clause de correspondance,
s'il s'agit d'une chaîne, doit correspondre exactement.
L'utilisation de ce paramètre désactive Wildcard et
Regex. Si la clause de correspondance n'est pas une
chaîne, ce paramètre est ignoré.
CaseSensitive Modifie la clause de correspondance, s'il
s'agit d'une chaîne, de sorte qu'elle respecte
la casse. Si la clause de correspondance n'est
pas une chaîne, ce paramètre est ignoré.
File Accepte l'entrée d'un fichier (ou de ce qui
le représente) plutôt que d'une instruction.
Si plusieurs paramètres File sont utilisés,
c'est le dernier qui est utilisé. Chaque
ligne du fichier est lue et passée via le
bloc switch.
Les paramètres Regex, Wildcard ou Exact peuvent être utilisés de
plusieurs façons. Toutefois, uniquement le dernier paramètre
utilisé régit le comportement.
Le mot clé Break indique l'arrêt du traitement et la sortie de
l'instruction switch.
Le mot clé Continue indique que le traitement du jeton actuel va
cesser pour passer à l'évaluation du jeton suivant de l'expression
conditionnelle. La sortie de l'instruction switch intervient
lorsqu'aucun jeton n'est disponible.
Le bloc " { expression } " peut être un bloc de code qui sera
évalué au moment de la comparaison. L'objet actif est lié à la
variable automatique $_ et est disponible pendant l'évaluation de
l'expression. Une comparaison est considérée comme une
correspondance si l'expression prend la valeur " True ". Cette
expression est évaluée dans une nouvelle portée.
Le mot clé " Default " de l'instruction switch indique que si aucune
correspondance n'est trouvée, le bloc de code qui suit le mot clé
sera évalué. Le déroulement du programme ne sera pas autorisé de
bloc à bloc, car l'accolade fermante (" } ") de la liste composée
est un " break " explicite.
Si plusieurs correspondances sont trouvées, chacune d'elle provoque
l'exécution de l'expression. Pour éviter cela, les mots clés Break
ou Continue peuvent être utilisés pour arrêter les comparaisons
à venir.
VOIR AUSSI
about_Break
about_Continue
about_If
about_Script_Blocks