Поиск…


Вступление

Оператор switch позволяет проверять переменную для равенства по отношению к списку значений. Каждое значение называется случаем , а переменная, включенная, проверяется для каждого случая коммутатора. Это позволяет вам писать сценарий, который может выбирать из серии опций, но не требует, чтобы вы писали длинную серию утверждений if.

замечания

В этом разделе документируется оператор switch, используемый для ветвления потока скрипта. Не путайте его с параметрами переключателя, которые используются в функциях в виде логических флагов.

Простой коммутатор

Операторы switch сравнивают одно тестовое значение с несколькими условиями и выполняют любые связанные действия для успешных сравнений. Это может привести к нескольким совпадениям / действиям.

Учитывая следующий переключатель ...

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

'First Action' будет выводиться, если $myValue задано как 'First Condition' .

'Section Action' будет выводиться, если $myValue задано как 'Second Condition' .

Ничего не будет $myValue если $myValue не соответствует ни условиям.

Заявление о переключении с параметром Regex

Параметр -Regex позволяет операторам операторов выполнять регулярное выражение, сопоставляющее условия.

Пример:

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'} 
}

Выход:

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

Простой коммутатор с перерывом

Ключевое слово break может использоваться в операторах switch для выхода из инструкции перед оценкой всех условий.

Пример:

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

Выход:

First Action
Second Action

Из-за ключевого слова break во втором действии третье условие не оценивается.

Заявление переключателя с параметром подстановочного знака

Параметр -Wildcard позволяет операторам-переключателям выполнять подстановочные знаки, соответствующие условиям.

Пример:

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'} 
}

Выход:

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

Заявление о выводе с точным параметром

Параметр -Exact обеспечивает выполнение операторов switch для выполнения точного, нечувствительного к регистру сопоставления с строковыми условиями.

Пример:

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

Выход:

First Action
Second Action
Third Action

Выполняются первые-третье действия, потому что соответствующие им условия соответствуют входу. Строки регулярных выражений и подстановочных знаков в четвертом и пятом состояниях не совпадают.

Обратите внимание, что четвертое условие также будет соответствовать входной строке, если выполняется сопоставление регулярных выражений, но в этом случае игнорируется, потому что это не так.

Заявление о переключении с параметром CaseSensitive

Параметр -CaseSensitive вводит операторы switch для выполнения точного, -CaseSensitive регистр соответствия условий.

Пример:

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

Выход:

Second Action

Второе действие - единственное действие, выполняемое, потому что оно является единственным условием, которое точно соответствует строке 'Condition' при учете чувствительности к регистру.

Выписка переключателя с параметром файла

Параметр -file позволяет оператору switch получать входные данные из файла. Каждая строка файла оценивается оператором switch.

Пример файла input.txt :

condition
test

Пример оператора switch:

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

Выход:

First Action
Second Action

Простой коммутатор с условием по умолчанию

Ключевое слово Default используется для выполнения действия, когда никакие другие условия не соответствуют входному значению.

Пример:

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

Выход:

Default Action

Заявление о выводе с выражениями

Условиями могут быть также выражения:

$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
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow