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




Table des matières