Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
BREVE DESCRIÇÃO
Explica como utilizar um interruptor para manusear várias declarações se forem feitas.
LONGA DESCRIÇÃO
Para verificar uma condição num script ou função, utilize uma If declaração. A If declaração pode verificar muitos tipos de condições, incluindo o valor das variáveis e as propriedades dos objetos.
Para verificar várias condições, utilize uma Switch declaração. A Switch afirmação equivale a uma série de declarações de If, mas é mais simples. A Switch declaração enumera cada condição e uma ação opcional. Se uma condição for obtida, a ação é executada.
A Switch declaração também usa a $switch variável automática. Para mais informações, consulte about_Automatic_Variables.
Uma declaração básica Switch tem o seguinte formato:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Por exemplo, a seguinte Switch declaração compara o valor do teste, 3, a cada uma das condições. Quando o valor do teste corresponde à condição, a ação é executada.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
Neste exemplo simples, o valor é comparado a cada condição da lista, mesmo que haja uma correspondência para o valor 3. A seguinte Switch declaração tem duas condições para um valor de 3. Demonstra que, por defeito, todas as condições são testadas.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Three again.
Para direcionar Switch o parando de comparar após uma partida, use a Break declaração. A Break declaração termina a Switch declaração.
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."; Break}
4 {"It is four."}
3 {"Three again."}
}
It is three.
Se o valor de teste for uma coleção, tal como uma matriz, cada item da coleção é avaliado na ordem em que aparece. Os exemplos a seguir avaliam 4 e depois 2.
switch (4, 2)
{
1 {"It is one." }
2 {"It is two." }
3 {"It is three." }
4 {"It is four." }
3 {"Three again."}
}
It is four.
It is two.
Quaisquer Break declarações aplicam-se à coleção, e não a cada valor, como mostra o exemplo seguinte. A Switch declaração é encerrada pela declaração no estado de valor Break 4.
switch (4, 2)
{
1 {"It is one."; Break}
2 {"It is two." ; Break }
3 {"It is three." ; Break }
4 {"It is four." ; Break }
3 {"Three again."}
}
It is four.
Syntax
A sintaxe de declaração completa Switch é a seguinte:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
ou
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Se não forem utilizados parâmetros, Switch executa uma correspondência exata insensível ao caso pelo valor. Se o valor for uma coleção, cada elemento é avaliado na ordem em que aparece.
A Switch declaração deve incluir pelo menos uma declaração de condição.
A Default cláusula é desencadeada quando o valor não corresponde a nenhuma das condições. É equivalente a uma Else cláusula num If comunicado. Apenas uma Default cláusula é permitida em cada Switch declaração.
Switchtem os seguintes parâmetros:
| Parâmetro | Descrição |
|---|---|
| Wildcard | Indica que a condição é uma corda wildcard. |
| Se a cláusula de jogo não é uma corda, o parâmetro é | |
| é ignorado. | |
| Exato | Indica que a cláusula de jogo, se for uma corda, deve |
| combinar exatamente. Se a cláusula de jogo não é uma corda, este parâmetro | |
| é ignorado. | |
| CasoSensitivo | Executa uma combinação sensível a casos. Se a cláusula de jogo não for |
| uma corda, este parâmetro é ignorado. | |
| Ficheiro | Tira a entrada de um ficheiro em vez de uma declaração de valor. Se |
| vários parâmetros de arquivo estão incluídos, apenas o último é | |
| usado. Cada linha do ficheiro é lida e avaliada pela | |
Switchdeclaração. |
|
| Regex | Executa a correspondência regular da expressão do valor com o |
| condição. Caso a opção | |
| cláusula de correspondência não é uma corda, este parâmetro é ignorado. |
Nota
Ao especificar valores contraditórios, como Regex e Wildcard, o último parâmetro especificado tem precedência, e todos os parâmetros contraditórios são ignorados. São também permitidas múltiplas instâncias de parâmetros. No entanto, apenas o último parâmetro utilizado é eficaz.
Neste exemplo, não há caso de correspondência, pelo que não existe saída.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
Ao adicionar a Default cláusula, pode executar uma ação quando nenhuma outra condição for bem sucedida.
switch ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
Default {
"No matches"
}
}
No matches
Para que a palavra "catorze" corresponda a uma caixa deve utilizar o -Wildcard parâmetro ou -Regex o parâmetro.
PS> switch -Wildcard ("fourteen")
{
1 {"It is one."; Break}
2 {"It is two."; Break}
3 {"It is three."; Break}
4 {"It is four."; Break}
"fo*" {"That's too many."}
}
That's too many.
O exemplo a seguir utiliza o -Regex parâmetro.
$target = 'user@contoso.com'
switch -Regex ($target)
{
'ftp\://.*' { "$_ is an ftp address"; Break }
'\w+@\w+\.com|edu|org' { "$_ is an email address"; Break }
'http[s]?\://.*' { "$_ is a web address"; Break }
}
user@contoso.com is an email address
Uma Switch condição de declaração pode ser:
- Uma expressão cujo valor é comparado com o valor de entrada
- Um bloco de guião que deve voltar
$truese uma condição for cumprida. O bloco de scripts recebe o objeto atual para comparar na$_variável automática e é avaliado no seu próprio âmbito.
A ação para cada condição é independente das ações noutras condições.
O exemplo a seguir demonstra a utilização de blocos de script como condições de Switch declaração.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
Se o valor corresponder a várias condições, a ação para cada condição é executada. Para alterar este comportamento, use as Break Continue palavras-chave ou as palavras-chave.
A Break palavra-chave para o processamento e sai da Switch declaração.
A Continue palavra-chave para de processar o valor atual, mas continua a processar quaisquer valores subsequentes.
O exemplo a seguir processa uma série de números e ecrãs se forem estranhos ou mesmo. Os números negativos são ignorados com a Continue palavra-chave. Se um não-número for encontrado, a execução termina com a Break palavra-chave.
switch (1,4,-1,3,"Hello",2,1)
{
{$_ -lt 0} { Continue }
{$_ -isnot [Int32]} { Break }
{$_ % 2} {
"$_ is Odd"
}
{-not ($_ % 2)} {
"$_ is Even"
}
}
1 is Odd
4 is Even
3 is Odd