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 :
    

См. также