Szukaj…


Wprowadzenie

Instrukcja switch umożliwia testowanie zmiennej pod kątem równości z listą wartości. Każda wartość nazywana jest sprawą , a włączana zmienna jest sprawdzana dla każdej sprawy przełączającej. Umożliwia napisanie skryptu, który może wybierać spośród szeregu opcji, ale bez konieczności pisania długiej serii instrukcji if.

Uwagi

W tym temacie opisano dokumentację instrukcji switch służącą do rozgałęzienia przepływu skryptu. Nie należy mylić go z parametrami przełącznika, które są używane w funkcjach jako flagi boolowskie.

Prosty przełącznik

Instrukcje przełączające porównują pojedynczą wartość testową z wieloma warunkami i wykonują wszelkie powiązane działania w celu pomyślnego porównania. Może to spowodować wiele dopasowań / akcji.

Biorąc pod uwagę następujący przełącznik ...

switch($myValue)
{
    'First Condition'    { 'First Action' }
    'Second Condition'   { 'Second Action' }
}

'First Action' zostanie $myValue jeśli $myValue jest ustawiona jako 'First Condition' .

'Section Action' zostanie $myValue jeśli $myValue jest ustawione jako 'Second Condition' .

Nic nie zostanie wyświetlone, jeśli $myValue nie $myValue żadnego z warunków.

Instrukcja Switch z parametrem Regex

Parametr -Regex pozwala instrukcjom switch wykonywać dopasowanie wyrażeń regularnych do warunków.

Przykład:

switch -Regex ('Condition')
{ 
  'Con\D+ion'    {'One or more non-digits'}
  'Conditio*$'   {'Zero or more "o"'} 
  'C.ndition'    {'Any single char.'}  
  '^C\w+ition$'  {'Anchors and one or more word chars.'} 
  'Test'         {'No match'} 
}

Wynik:

One or more non-digits
Any single char.
Anchors and one or more word chars.

Prosty przełącznik z przerwą

break kluczowego break można użyć w instrukcjach switch, aby wyjść z instrukcji przed oceną wszystkich warunków.

Przykład:

switch('Condition')
{
  'Condition'
  {
    'First Action'
  }
  'Condition'
  {
    'Second Action'
    break
  }
  'Condition'
  {
    'Third Action'
  }
}

Wynik:

First Action
Second Action

Ze względu na słowo kluczowe break w drugiej akcji trzeci warunek nie jest oceniany.

Instrukcja Switch z parametrem Wildcard

Parametr -Wildcard pozwala instrukcjom przełączników wykonywać dopasowanie symboli wieloznacznych do warunków.

Przykład:

switch -Wildcard ('Condition')
{ 
    'Condition'           {'Normal match'}
    'Condit*'             {'Zero or more wildcard chars.'} 
    'C[aoc]ndit[f-l]on'   {'Range and set of chars.'}  
    'C?ndition'           {'Single char. wildcard'}
    'Test*'               {'No match'} 
}

Wynik:

Normal match
Zero or more wildcard chars.
Range and set of chars.
Single char. wildcard

Instrukcja Switch z dokładnym parametrem

Parametr -Exact wymusza instrukcje przełącznika, aby wykonać dokładne dopasowanie bez rozróżniania wielkości liter względem warunków łańcuchowych.

Przykład:

switch -Exact ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
  '^*ondition$' {'Fourth Action'} 
  'Conditio*'   {'Fifth Action'} 
}

Wynik:

First Action
Second Action
Third Action

Akcje od pierwszego do trzeciego są wykonywane, ponieważ związane z nimi warunki pasują do danych wejściowych. Ciągi wyrażeń regularnych i symboli zastępczych w czwartym i piątym stanie nie są zgodne.

Zauważ, że czwarty warunek pasowałby również do łańcucha wejściowego, gdyby przeprowadzono dopasowanie wyrażeń regularnych, ale w tym przypadku został zignorowany, ponieważ tak nie jest.

Instrukcja Switch z parametrem CaseSensitive

Parametr -CaseSensitive wymusza instrukcje przełącznika, aby dokładnie dopasować -CaseSensitive liter do warunków.

Przykład:

switch -CaseSensitive ('Condition')
{ 
  'condition'   {'First Action'}
  'Condition'   {'Second Action'} 
  'conditioN'   {'Third Action'}  
}

Wynik:

Second Action

Druga akcja jest jedyną wykonaną akcją, ponieważ jest to jedyny warunek, który dokładnie pasuje do ciągu 'Condition' przy uwzględnianiu wielkości liter.

Instrukcja Switch z parametrem pliku

Parametr -file umożliwia instrukcji switch otrzymanie danych wejściowych z pliku. Każda linia pliku jest oceniana przez instrukcję switch.

Przykładowy plik input.txt :

condition
test

Przykładowa instrukcja przełączania:

switch -file input.txt
{ 
  'condition' {'First Action'}
  'test'      {'Second Action'} 
  'fail'      {'Third Action'}   
}

Wynik:

First Action
Second Action

Prosty przełącznik z domyślnym warunkiem

Default słowo kluczowe służy do wykonania akcji, gdy żadne inne warunki nie odpowiadają wartości wejściowej.

Przykład:

switch('Condition')
{
  'Skip Condition'
  {
    'First Action'
  }
  'Skip This Condition Too'
  {
    'Second Action'
  }
  Default
  {
    'Default Action'
  }
}

Wynik:

Default Action

Instrukcja Switch z wyrażeniami

Warunki mogą być również wyrażeniami:

$myInput = 0

switch($myInput) {
    # because the result of the expression, 4, 
    # does not equal our input this block should not be run.
    (2+2)  { 'True. 2 +2 = 4' }

    # because the result of the expression, 0, 
    # does equal our input this block should be run.
    (2-2) { 'True. 2-2 = 0' }

    # because our input is greater than -1 and is less than 1 
    # the expression evaluates to true and the block should be run.
    { $_ -gt -1 -and $_ -lt 1 } { 'True. Value is 0' }
}

#Output
True. 2-2 = 0
True. Value is 0


Modified text is an extract of the original Stack Overflow Documentation
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow