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