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
Continue.
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 :