Condividi tramite


about_Return

Breve descrizione

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

Descrizione lunga

La return parola chiave chiude 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 la fine dell'ambito è stata raggiunta.

Gli utenti che hanno familiarità con i linguaggi come C o C# potrebbero voler usare return la 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 definire le classi usando la sintassi formale. Nel contesto di una classe PowerShell, non viene generato 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 un'espressione, come indicato di seguito:

return
return $a
return (2 + $a)

Esempio

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 restituita 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. I risultati di ogni istruzione vengono restituiti. 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 consentire all'utente di sapere che la funzione esegue un calcolo:

function calculation {
    param ($value)

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

$a = calculation 14

"Attendere. Lavorare sul calcolo..." stringa non visualizzata. Viene invece assegnato alla variabile, come nell'esempio $a seguente:

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

Sia la stringa informativo 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 i membri e li passa uno alla volta attraverso la pipeline. Ciò è dovuto all'elaborazione one-a-time di PowerShell. Per altre informazioni, vedere about_pipelines.

Questo concetto viene 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 per restituire la raccolta come singolo oggetto alla pipeline, usare uno dei due metodi seguenti:

  • Espressione di matrice Unary

    L'uso di un'espressione unaria consente di inviare il valore restituito alla pipeline come singolo oggetto 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 cmdlet con il Write-Output parametro NoEnumerate . Nell'esempio seguente viene usato il Measure-Object cmdlet per contare gli oggetti inviati alla pipeline dalla funzione di esempio in base return alla 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