Сведения о переключении
КРАТКОЕ ОПИСАНИЕ
Объясняется, как использовать переключатель для обработки нескольких операторов If.
ПОДРОБНОЕ ОПИСАНИЕ
Чтобы проверка условие в скрипте или функции, используйте If
оператор . Оператор If
может проверка различных типов условий, включая значение переменных и свойства объектов.
Чтобы проверка нескольких условий, используйте Switch
оператор . Оператор Switch
эквивалентен последовательности операторов If, но проще. Инструкция Switch
перечисляет каждое условие и необязательное действие. Если условие получается, выполняется действие .
Оператор Switch
также использует автоматическую $switch
переменную. Дополнительные сведения см. в статье about_Automatic_Variables.
Базовая Switch
инструкция имеет следующий формат:
Switch (<test-value>)
{
<condition> {<action>}
<condition> {<action>}
}
Например, следующая Switch
инструкция сравнивает тестовое значение 3 с каждым из условий. Если тестовое значение соответствует условию, выполняется действие .
switch (3)
{
1 {"It is one."}
2 {"It is two."}
3 {"It is three."}
4 {"It is four."}
}
It is three.
В этом простом примере значение сравнивается с каждым условием в списке, даже если для значения 3 имеется совпадение. Switch
Следующая инструкция имеет два условия для значения 3. Он показывает, что по умолчанию проверяются все условия.
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.
Чтобы переключить Switch
сравнение после совпадения, используйте Break
оператор . Оператор Break
завершает Switch
оператор .
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.
Если тестовое значение является коллекцией, например массивом, каждый элемент в коллекции оценивается в том порядке, в котором он отображается. В следующих примерах вычисляется значение 4, а затем 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.
Все Break
инструкции применяются к коллекции, а не к каждому значению, как показано в следующем примере. Оператор Switch
завершается оператором 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.
Синтаксис
Switch
Полный синтаксис инструкции выглядит следующим образом:
switch [-regex|-wildcard|-exact][-casesensitive] (<value>)
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
или
switch [-regex|-wildcard|-exact][-casesensitive] -file filename
{
"string"|number|variable|{ expression } { statementlist }
default { statementlist }
}
Если параметры не используются, Switch
выполняет точное соответствие значения без учета регистра. Если значением является коллекция, каждый элемент вычисляется в порядке, в котором он отображается.
Оператор Switch
должен содержать по крайней мере один оператор условия.
Предложение Default
активируется, если значение не соответствует ни одному из условий. Он эквивалентен предложению Else
в операторе If
. В каждой Switch
инструкции допускается только одно Default
предложение.
Switch
имеет следующие параметры:
Параметр | Описание |
---|---|
Подстановочный знак | Указывает, что условие является строкой с подстановочными знаками. |
Если предложение match не является строкой, параметр имеет значение | |
Игнорировать. | |
Exact | Указывает, что предложение match, если оно является строкой, должно |
совпадение точно. Если предложение match не является строкой, этот параметр | |
не учитывается. | |
CaseSensitive | Выполняет сопоставление с учетом регистра. Если предложение match не является |
строка, этот параметр игнорируется. | |
Файл | Принимает входные данные из файла, а не из оператора value. If |
включено несколько параметров файла , только последний — | |
Использовать. Каждая строка файла считывается и вычисляется с помощью | |
Оператор Switch . |
|
Regex | Выполняет сопоставление регулярного выражения значения со значением |
condition. Если | |
Предложение match не является строкой, этот параметр игнорируется. |
Примечание
При указании конфликтующих значений, таких как Regex и Wildcard, последний указанный параметр имеет приоритет, а все конфликтующие параметры игнорируются. Также разрешено использовать несколько экземпляров параметров. Однако действует только последний используемый параметр.
В этом примере нет соответствующего регистра, поэтому выходные данные отсутствуют.
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
предложение , можно выполнить действие, если другие условия не выполняются.
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
Чтобы слово "четырнадцать" соответствовало регистру -Wildcard
, необходимо использовать параметр или -Regex
.
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.
В следующем примере используется -Regex
параметр .
$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
Условие Switch
инструкции может быть следующим:
- Выражение, значение которого сравнивается с входным значением.
- Блок скрипта, который должен возвращать
$true
, если условие выполнено. Блок скрипта получает текущий объект для сравнения в автоматической$_
переменной и вычисляется в собственном область.
Действие для каждого условия не зависит от действий в других условиях.
В следующем примере показано использование блоков скрипта в качестве Switch
условий инструкции.
switch ("Test")
{
{$_ -is [String]} {
"Found a string"
}
"Test" {
"This executes as well"
}
}
Found a string
This executes as well
Если значение соответствует нескольким условиям, выполняется действие для каждого условия. Чтобы изменить это поведение, используйте ключевые Break
слова или Continue
.
Ключевое слово Break
останавливает обработку и завершает инструкцию Switch
.
Ключевое слово Continue
прекращает обработку текущего значения, но продолжает обработку всех последующих значений.
В следующем примере обрабатывается массив чисел и отображается, являются ли они нечетными или четными. Отрицательные числа пропускаются с Continue
ключевое слово. Если обнаруживается нечисловое значение, выполнение завершается Break
с помощью ключевое слово.
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