Поделиться через


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 командлета с параметром InformationActionContinue.

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 :
    

См. также раздел