about_Return

Descripción breve

Sale del ámbito actual, que puede ser una función, un script o un bloque de script.

Descripción larga

La return palabra clave sale de una función, un script o un bloque de scripts. Se puede usar para salir de un ámbito en un punto específico, para devolver un valor o para indicar que se ha alcanzado el final del ámbito.

Es posible que los usuarios que estén familiarizados con lenguajes como C o C# quieran usar la return palabra clave para hacer que la lógica de dejar un ámbito explícito.

En PowerShell, los resultados de cada instrucción se devuelven como salida, incluso sin una instrucción que contenga la palabra clave Return. Los lenguajes como C o C# devuelven solo el valor o los valores especificados por la return palabra clave .

Nota:

A partir de PowerShell 5.0, PowerShell agregó lenguaje para definir clases mediante la sintaxis formal. En el contexto de una clase de PowerShell, no se genera nada desde un método excepto lo que se especifica mediante una return instrucción . Puede obtener más información sobre las clases de PowerShell en about_Classes.

Sintaxis

La sintaxis de la return palabra clave es la siguiente:

return [<expression>]

La return palabra clave puede aparecer sola o puede ir seguida de un valor o expresión, como se indica a continuación:

return
return $a
return (2 + $a)

Ejemplos

En el ejemplo siguiente se usa la return palabra clave para salir de una función en un punto específico si se cumple un condicional. Los números impares no se multiplican porque la instrucción return sale antes de que esa instrucción se pueda ejecutar.

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

En PowerShell, se pueden devolver valores incluso si no se usa la return palabra clave . Se devuelven los resultados de cada instrucción. Por ejemplo, las siguientes instrucciones devuelven el valor de la $a variable :

$a
return

La siguiente instrucción también devuelve el valor de $a:

return $a

En el ejemplo siguiente se incluye una instrucción destinada a informar al usuario de que la función está realizando un cálculo:

function calculation {
    param ($value)

    "Please wait. Working on calculation..."
    $value += 73
    return $value
}

$a = calculation 14

"Por favor, espere. Trabajar en el cálculo..." string no se muestra. En su lugar, se asigna a la $a variable , como en el ejemplo siguiente:

PS> $a
Please wait. Working on calculation...
87

Tanto la cadena informativa como el resultado del cálculo se devuelven mediante la función y se asignan a la $a variable.

Si desea mostrar un mensaje dentro de la función, a partir de PowerShell 5.0, puede usar la Information secuencia. El código siguiente corrige el ejemplo anterior mediante el Write-Information cmdlet con un InformationAction de 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

Valores devueltos y canalización

Cuando se devuelve una colección desde el bloque de script o la función, PowerShell anula automáticamente los miembros y los pasa de uno a uno a través de la canalización. Esto se debe al procesamiento de uno a uno de PowerShell. Para obtener más información, consulte about_pipelines.

Este concepto se ilustra mediante la siguiente función de ejemplo que devuelve una matriz de números. La salida de la función se canaliza al Measure-Object cmdlet que cuenta el número de objetos de la canalización.

function Test-Return
{
    $array = 1,2,3
    return $array
}
Test-Return | Measure-Object
Count    : 3
Average  :
Sum      :
Maximum  :
Minimum  :
Property :

Para forzar que un bloque de script o una función devuelvan la colección como un único objeto a la canalización, use uno de los dos métodos siguientes:

  • Expresión de matriz unaria

    Mediante una expresión unaria, puede enviar el valor devuelto a la canalización como un solo objeto, como se muestra en el ejemplo siguiente.

    function Test-Return
    {
        $array = 1,2,3
        return (, $array)
    }
    Test-Return | Measure-Object
    
    Count    : 1
    Average  :
    Sum      :
    Maximum  :
    Minimum  :
    Property :
    
  • Write-Output con el parámetro NoEnumerate .

    También puede usar el Write-Output cmdlet con el parámetro NoEnumerate . En el ejemplo siguiente se usa el Measure-Object cmdlet para contar los objetos enviados a la canalización desde la función de ejemplo mediante la return palabra clave .

    function Test-Return
    {
        $array = 1, 2, 3
        return Write-Output -NoEnumerate $array
    }
    
    Test-Return | Measure-Object
    
    Count    : 1
    Average  :
    Sum      :
    Maximum  :
    Minimum  :
    Property :
    

Consulte también