about_Return
Korte beschrijving
Hiermee wordt het huidige bereik afgesloten. Dit kan een functie, script of scriptblok zijn.
Lange beschrijving
Met return het trefwoord wordt een functie, script of scriptblok afgesloten. Het kan worden gebruikt om een bereik op een bepaald punt af te sluiten, een waarde te retourneren of om aan te geven dat het einde van het bereik is bereikt.
Gebruikers die bekend zijn met talen zoals C of C# willen mogelijk het return trefwoord gebruiken om de logica van het expliciet laten van een bereik te maken.
In PowerShell worden de resultaten van elke instructie geretourneerd als uitvoer, zelfs zonder een instructie die het trefwoord Return bevat. Talen zoals C of C# retourneren alleen de waarde of waarden die zijn opgegeven door het return trefwoord.
Notitie
Vanaf PowerShell 5.0 heeft PowerShell taal toegevoegd voor het definiëren van klassen met behulp van formele syntaxis. In de context van een PowerShell-klasse wordt niets uitgevoerd van een methode, behalve wat u opgeeft met behulp van een return instructie. Meer informatie over PowerShell-klassen vindt u in about_Classes.
Syntax
De syntaxis voor het return trefwoord is als volgt:
return [<expression>]
Het return trefwoord kan alleen worden weergegeven of kan als volgt worden gevolgd door een waarde of expressie:
return
return $a
return (2 + $a)
Voorbeelden
In het volgende voorbeeld wordt het return trefwoord gebruikt om een functie op een bepaald punt af te sluiten als aan een voorwaarde wordt voldaan. Oneven getallen worden niet vermenigvuldigd omdat de retourinstructie wordt afgesloten voordat deze instructie kan worden uitgevoerd.
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 kunnen waarden worden geretourneerd, zelfs als het return trefwoord niet wordt gebruikt.
De resultaten van elke instructie worden geretourneerd. De volgende instructies retourneren bijvoorbeeld de waarde van de $a variabele:
$a
return
De volgende instructie retourneert ook de waarde van $a:
return $a
Het volgende voorbeeld bevat een instructie die is bedoeld om de gebruiker te laten weten dat de functie een berekening uitvoert:
function calculation {
param ($value)
"Please wait. Working on calculation..."
$value += 73
return $value
}
$a = calculation 14
De "Alsjeblieft wachten. Werken aan berekening... tekenreeks wordt niet weergegeven. In plaats daarvan wordt deze toegewezen aan de $a variabele, zoals in het volgende voorbeeld:
PS> $a
Please wait. Working on calculation...
87
Zowel de informatieve tekenreeks als het resultaat van de berekening worden geretourneerd door de functie en toegewezen aan de $a variabele.
Als u een bericht in uw functie wilt weergeven, vanaf PowerShell 5.0, kunt u de Information stream gebruiken. Met de onderstaande code wordt het bovenstaande voorbeeld gecorrigeerd met behulp van de Write-Information cmdlet met een InformationAction van 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
Retourwaarden en de pijplijn
Wanneer u een verzameling uit uw scriptblok of functie retourneert, worden de leden automatisch uitgeschreven en één voor één doorgegeven via de pijplijn. Dit komt door de eenmalige verwerking van PowerShell. Zie about_pipelines voor meer informatie.
Dit concept wordt geïllustreerd door de volgende voorbeeldfunctie die een matrix met getallen retourneert. De uitvoer van de functie wordt doorgesluisd naar de Measure-Object cmdlet waarmee het aantal objecten in de pijplijn wordt geteld.
function Test-Return
{
$array = 1,2,3
return $array
}
Test-Return | Measure-Object
Count : 3
Average :
Sum :
Maximum :
Minimum :
Property :
Als u wilt afdwingen dat een scriptblok of functie verzameling als één object naar de pijplijn retourneert, gebruikt u een van de volgende twee methoden:
Unaire matrixexpressie
Door gebruik te maken van een unaire expressie kunt u de retourwaarde naar beneden verzenden als één object, zoals wordt geïllustreerd in het volgende voorbeeld.
function Test-Return { $array = 1,2,3 return (, $array) } Test-Return | Measure-ObjectCount : 1 Average : Sum : Maximum : Minimum : Property :Write-Outputmet de parameter NoEnumerate .U kunt de
Write-Outputcmdlet ook gebruiken met de parameter NoEnumerate . In het onderstaande voorbeeld wordt deMeasure-Objectcmdlet gebruikt om de objecten te tellen die met hetreturntrefwoord naar de pijplijn zijn verzonden vanuit de voorbeeldfunctie.function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-ObjectCount : 1 Average : Sum : Maximum : Minimum : Property :