Delen via


about_Return

Korte beschrijving

Sluit het huidige bereik af. Dit kan een functie, script of scriptblok zijn.

Lange beschrijving

Het return trefwoord sluit een functie, script of scriptblok af. 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 verlaten 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 is er niets van een methode, behalve wat u opgeeft met behulp van een return instructie. Meer informatie over PowerShell-klassen vindt u in about_Classes.

Syntaxis

De syntaxis voor het return trefwoord is als volgt:

return [<expression>]

Het return trefwoord kan alleen worden weergegeven, of het 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 af te sluiten op een bepaald punt 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. Met de volgende instructies wordt bijvoorbeeld de waarde van de $a variabele geretourneerd:

$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 "Een ogenblik geduld. 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. De onderstaande code corrigeert het bovenstaande voorbeeld 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 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

    Als u een unaire expressie gebruikt, kunt u de retourwaarde in de pijplijn als één object verzenden, zoals wordt geïllustreerd in het volgende voorbeeld.

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

    U kunt de Write-Output cmdlet ook gebruiken met de parameter NoEnumerate . In het onderstaande voorbeeld wordt de Measure-Object cmdlet gebruikt om de objecten te tellen die naar de pijplijn zijn verzonden vanuit de voorbeeldfunctie op basis van het return trefwoord.

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

Zie ook