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 ilMeasure-Object
cmdlet per contare gli oggetti inviati alla pipeline dalla funzione di esempio in basereturn
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 :