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