about_Return

Descrizione breve

Esce dall'ambito corrente, che può essere una funzione, uno script o un blocco di script.

Descrizione lunga

La return parola chiave esce da una funzione, uno script o un blocco di script. Può essere usato per uscire da un ambito in un punto specifico, per restituire un valore o per indicare che è stata raggiunta la fine dell'ambito.

Gli utenti che hanno familiarità con linguaggi come C o C# potrebbero voler usare la return parola chiave per rendere esplicita la logica di lasciare un ambito esplicito.

In PowerShell i risultati di ogni istruzione vengono restituiti come output, anche senza un'istruzione contenente la parola chiave Return. I linguaggi come C o C# restituiscono solo il valore o i valori specificati dalla return parola chiave .

Nota

A partire da PowerShell 5.0, PowerShell ha aggiunto il linguaggio per la definizione delle classi usando la sintassi formale. Nel contesto di una classe PowerShell, non viene restituito alcun output da un metodo, ad eccezione di quello specificato tramite un'istruzione return . Per altre informazioni sulle classi di PowerShell, vedere about_Classes.

Sintassi

La sintassi per la return parola chiave è la seguente:

return [<expression>]

La return parola chiave può essere visualizzata da sola oppure può essere seguita da un valore o da un'espressione, come indicato di seguito:

return
return $a
return (2 + $a)

Esempi

Nell'esempio seguente viene usata la return parola chiave per uscire da una funzione in un punto specifico se viene soddisfatta una condizionale. I numeri dispari non vengono moltiplicati perché l'istruzione return viene chiusa prima che tale istruzione possa essere eseguita.

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

In PowerShell i valori possono essere restituiti anche se la return parola chiave non viene usata. Vengono restituiti i risultati di ogni istruzione. Ad esempio, le istruzioni seguenti restituiscono il valore della $a variabile:

$a
return

L'istruzione seguente restituisce anche il valore di $a:

return $a

L'esempio seguente include un'istruzione destinata a informare l'utente che la funzione sta eseguendo un calcolo:

function calculation {
    param ($value)

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

$a = calculation 14

Il "Per favore aspettate. Lavoro sul calcolo..." stringa non visualizzata. Al contrario, viene assegnato alla $a variabile, come nell'esempio seguente:

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

Sia la stringa informativa che il risultato del calcolo vengono restituiti dalla funzione e assegnati alla $a variabile.

Se si vuole visualizzare un messaggio all'interno della funzione, a partire da PowerShell 5.0, è possibile usare il Information flusso. Il codice seguente corregge l'esempio precedente usando il Write-Information cmdlet con un InformationAction oggetto 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

Restituire i valori e la pipeline

Quando si restituisce una raccolta dal blocco di script o dalla funzione, PowerShell annulla automaticamente la registrazione dei membri e li passa uno alla volta attraverso la pipeline. Ciò è dovuto all'elaborazione one-at-a-time di PowerShell. Per altre informazioni, vedere about_pipelines.

Questo concetto è illustrato dalla funzione di esempio seguente che restituisce una matrice di numeri. L'output della funzione viene inviato tramite pipe al Measure-Object cmdlet che conta il numero di oggetti nella pipeline.

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

Per forzare un blocco di script o una funzione a restituire una raccolta come singolo oggetto alla pipeline, usare uno dei due metodi seguenti:

  • Espressione di matrice unaria

    L'utilizzo di un'espressione unaria consente di inviare il valore restituito alla pipeline come singolo oggetto, come illustrato nell'esempio seguente.

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

    È anche possibile usare il Write-Output cmdlet con il parametro NoEnumerate . L'esempio seguente usa il Measure-Object cmdlet per contare gli oggetti inviati alla pipeline dalla funzione di esempio tramite la return parola chiave .

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

Vedi anche