about_Return
Краткое описание
Описывает выход из текущей области действия, которая может быть функцией, скриптом или блоком скриптов.
Подробное описание
Ключевое слово return
завершает работу функции, скрипта или блока скриптов. Его можно использовать для выхода из область в определенной точке, для возврата значения или для указания того, что конец область достигнут.
Пользователи, знакомые с языками, такими как C или C#, могут использовать return
ключевое слово, чтобы сделать логику выхода область явным образом.
В PowerShell результаты каждой инструкции возвращаются в виде выходных данных, даже без инструкции, содержащей ключевое слово return. Языки, такие как C или C#, возвращают только значение или значения, указанные return
ключевое слово.
Примечание.
Начиная с PowerShell 5.0, PowerShell добавил язык для определения классов с помощью формального синтаксиса. В контексте класса PowerShell ничего не выводится из метода, за исключением того, что вы указываете с помощью инструкции return
. Дополнительные сведения о классах PowerShell см. в about_Classes.
Синтаксис
Синтаксис для return
ключевое слово выглядит следующим образом:
return [<expression>]
Ключевое слово return
может отображаться в одиночку или за ним может следовать значение или выражение, как показано ниже.
return
return $a
return (2 + $a)
Примеры
В следующем примере используется return
ключевое слово для выхода из функции в определенной точке, если выполняется условное действие. Нечетные числа не умножаются, так как оператор return завершает работу до выполнения этой инструкции.
function MultiplyEven
{
param($number)
if ($number % 2) { return "$number is not even" }
$number * 2
}
1..10 | ForEach-Object {MultiplyEven -Number $_}
1 is not even
4
3 is not even
8
5 is not even
12
7 is not even
16
9 is not even
20
В PowerShell значения можно возвращать, даже если return
ключевое слово не используется.
Возвращаются результаты каждой инструкции. Например, следующие операторы возвращают значение переменной $a
:
$a
return
Следующая инструкция также возвращает значение $a
:
return $a
В следующем примере содержится инструкция, предназначенная для того, чтобы пользователь знал, что функция выполняет вычисление:
function calculation {
param ($value)
"Please wait. Working on calculation..."
$value += 73
return $value
}
$a = calculation 14
"Пожалуйста, подождите. Работа над вычислением..." Строка не отображается. Вместо этого она назначается переменной $a
, как показано в следующем примере:
PS> $a
Please wait. Working on calculation...
87
Информационная строка и результат вычисления возвращаются функцией и назначаются переменной $a
.
Если вы хотите отобразить сообщение в функции, начиная с PowerShell 5.0, можно использовать Information
поток. Приведенный ниже код исправляет приведенный выше пример с помощью Write-Information
командлета с параметром InformationAction
"Продолжить".
function calculation {
param ($value)
Write-Information "Please wait. Working on calculation..." -InformationAction Continue
$value += 73
return $value
}
$a = calculation 14
Please wait. Working on calculation...
C:\PS> $a
87
Возвращаемые значения и конвейер
При возврате коллекции из блока или функции скрипта PowerShell автоматически откатает элементы и передает их по одному через конвейер. Это связано с одной обработкой PowerShell во время. Дополнительные сведения см. в about_pipelines.
Эта концепция показана в следующем примере функции, которая возвращает массив чисел. Выходные данные функции передаются Measure-Object
командлету, который подсчитывает количество объектов в конвейере.
function Test-Return
{
$array = 1,2,3
return $array
}
Test-Return | Measure-Object
Count : 3
Average :
Sum :
Maximum :
Minimum :
Property :
Чтобы принудительно включить блок скрипта или функцию для возврата коллекции в качестве одного объекта в конвейер, используйте один из следующих двух методов:
Унарное выражение массива
Используя унарное выражение, можно отправить возвращаемое значение вниз конвейера в виде одного объекта, как показано в следующем примере.
function Test-Return { $array = 1,2,3 return (, $array) } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
Write-Output
с параметром NoEnumerate .Можно также использовать
Write-Output
командлет с параметром NoEnumerate . В приведенном ниже примере командлет используетсяMeasure-Object
для подсчета объектов, отправленных в конвейер из примера функцииreturn
ключевое слово.function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
См. также
PowerShell
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по