TÓPICO
    about_Switch

DESCRIÇÃO RESUMIDA
    Explica como usar Switch para manipular várias instruções If.

DESCRIÇÃO LONGA
    Você utiliza uma instrução If para tomar uma decisão em um script 
    ou programa. Essencialmente, ela diz "Se essa condição existir, 
    execute esta ação. Caso contrário, execute aquela". Você pode 
    executar essa operação quantas vezes desejar, mas se tiver uma 
    lista muito longa de condições, a instrução If se torna difícil 
    de controlar. Você pode combinar uma lista longa de condições em 
    uma instrução Switch. Assim como em todas as instruções ramificadas, é 
    necessário colocar os blocos de script entre chaves ({}).

    Uma instrução Switch é, na verdade, uma série de instruções If. 
    Ela combina a expressão com cada uma das condições, caso a caso. 
    Se uma ocorrência for encontrada, a ação associada à condição é 
    executada. A instrução Switch básica tem a seguinte forma:

        PS> $a = 3
        PS> switch ($a) {
            1 {"É o um."}
            2 {"É o dois."}
            3 {"É o três."}
            4 {"É o quatro."}
            }
        
        É o três.


    Esse exemplo simples pega um valor e o compara com cada condição 
    da lista. A ação repete uma cadeia de caracteres da 
    correspondência. Mas você pode ter problemas se verificar todas 
    as condições. Por exemplo:

        PS> $day = "day5"
        PS> switch ($day){
            day1 {"Segunda-feira"; break}
            day2 {"Terça-feira"; break}
            day3 {"Quarta-feira"; break}
            day4 {"Quinta-feira"; break}
            day5 {"Sexta-feira"; break}
            day6 {"Sábado"; break}
            day7 {"Domingo"; break}
            day5 {"Dias demais"; break}
            }
        
        Sexta-feira


    Há duas condições day5 na lista. Mas o break no final de cada 
    condição diz a Switch para parar de procurar e executar a ação 
    encontrada. Se as instruções break não estivessem ali, as duas 
    ações day5 seriam executadas. 

    Se o valor de alternância for uma matriz, então cada elemento na 
    matriz será avaliado na ordem, começando pelo elemento 0 (zero). 
    Deve estar presente pelo menos um elemento que atenda a pelo menos uma 
    condição; caso contrário, o resultado será um erro. Se houver mais de 
    uma cláusula padrão, haverá um erro.

    A sintaxe completa de Switch é:

        switch [-regex|-wildcard|-exact][-casesensitive] ( pipeline ) 
    ou

        switch [-regex|-wildcard|-exact][-casesensitive] -file filename

    seguido por

        { 
            "cadeia de caracteres"|number|variable|{ expression } { 
            statementlist } default { statementlist } 
        }

    
    Por padrão, se nenhum parâmetro for usado, Switch se comportará 
    como se uma ocorrência exata sem diferenciar maiúsculas de minúsculas 
    estivesse em vigor. Se "pipeline" resultar em uma matriz, cada 
    elemento da matriz será avaliado na ordem de deslocamento crescente 
    (começando pelo 0 [zero]).  

    Pelo menos um elemento condicional deve estar presente no bloco 
    de código de Switch, e apenas uma cláusula padrão pode estar 
    presente. Se houver mais de uma cláusula padrão, será lançada uma 
    ParseException.

    Switch tem os seguintes parâmetros:

        Regex	        Indica que a cláusula correspondente, 
                        se for uma cadeia de caracteres, será tratada como uma cadeia de 
                        caracteres regex. O uso desse parâmetro desabilita Wildcard e Exact. 
                        Se a cláusula correspondente não for uma cadeia de caracteres, esse 
                        parâmetro será ignorado.

        Wildcard	Indica que a cláusula correspondente, se for uma 
                        cadeia de caracteres, será tratada como uma cadeia de 
                        caracteres curinga. O uso desse parâmetro desabilita Regex e 
                        Exact. Se a cláusula correspondente não for uma cadeia de 
                        caracteres, esse parâmetro será ignorado.

        Exact	        Indica que a cláusula correspondente, 
                        se for uma cadeia de caracteres, deverá ser uma 
                        correspondência exata. O uso desse parâmetro desabilita 
                        Wildcard e Regex. Se a cláusula correspondente não for uma 
                        cadeia de caracteres, esse parâmetro será ignorado.

        CaseSensitive	Modifica a cláusula correspondente, caso seja 
                        uma cadeia de caracteres, para que diferencie maiúsculas de 
                        minúsculas. Se a cláusula correspondente não for uma cadeia 
                        de caracteres, esse parâmetro será ignorado.

        File	        Usa a entrada de um arquivo (ou representante), 
                        em vez de uma instrução. Se vários parâmetros 
                        File forem usados, o último será o escolhido. Cada linha do 
                        arquivo é lida e passada para o bloco Switch.

    São permitidos vários usos de Regex, Wildcard ou Exact. No 
    entanto, somente o último parâmetro usado rege o comportamento.

    A palavra-chave Break indica que não haverá mais processamento e que a 
    instrução Switch será fechada. 

    A palavra-chave Continue indica que não haverá mais processamento 
    no token atual e que o próximo token da condicional será 
    avaliado. Se não houver mais tokens disponíveis, a instrução 
    Switch será fechada.

    O bloco "{ expression }" pode ser um bloco de código que será 
    avaliado no momento da comparação. O objeto atual está vinculado 
    à variável automática $_ e fica disponível durante a avaliação da 
    expressão. Uma comparação será considerada uma ocorrência caso a 
    expressão seja avaliada como "True". Essa expressão é avaliada em 
    um novo escopo.

    A palavra-chave "Default" que aparece na instrução Switch indica 
    que, se nenhuma correspondência for encontrada, o bloco de código 
    depois dela será avaliado. Não será permitido que o fluxo do 
    programa siga bloco por bloco, pois a chave de fechamento na 
    lista composta é um break explícito. 

    Caso sejam encontradas várias correspondências, cada uma delas 
    resultará na execução da expressão. Para evitar isso, as 
    palavras-chave Break ou Continue podem ser usadas para 
    interromper futuras comparações.


CONSULTE TAMBÉM
    about_Break
    about_Continue
    about_If
    about_Script_Blocks




Sumário