about_Return

Kort beskrivning

Avslutar det aktuella omfånget, som kan vara en funktion, ett skript eller ett skriptblock.

Lång beskrivning

Nyckelordet return avslutar ett funktions-, skript- eller skriptblock. Den kan användas för att avsluta ett omfång vid en viss punkt, för att returnera ett värde eller för att indikera att slutet av omfånget har nåtts.

Användare som är bekanta med språk som C eller C# kanske vill använda nyckelordet return för att göra logiken för att lämna ett omfång explicit.

I PowerShell returneras resultatet för varje instruktion som utdata, även utan en instruktion som innehåller nyckelordet Retur. Språk som C eller C# returnerar endast det värde eller de värden som anges av nyckelordet return .

Kommentar

Från och med PowerShell 5.0 har PowerShell lagt till språk för att definiera klasser med hjälp av formell syntax. I kontexten för en PowerShell-klass är ingenting utdata från en metod förutom det du anger med hjälp av en return -instruktion. Du kan läsa mer om PowerShell-klasser i about_Classes.

Syntax

Syntaxen för nyckelordet return är följande:

return [<expression>]

Nyckelordet return kan visas ensamt eller följas av ett värde eller uttryck på följande sätt:

return
return $a
return (2 + $a)

Exempel

I följande exempel används nyckelordet return för att avsluta en funktion vid en viss punkt om ett villkor uppfylls. Udda tal multipliceras inte eftersom retursatsen avslutas innan instruktionen kan köras.

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

I PowerShell kan värden returneras även om nyckelordet return inte används. Resultatet av varje instruktion returneras. Följande uttryck returnerar till exempel värdet för variabeln $a :

$a
return

Följande instruktion returnerar också värdet $aför :

return $a

Följande exempel innehåller en instruktion som är avsedd att låta användaren veta att funktionen utför en beräkning:

function calculation {
    param ($value)

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

$a = calculation 14

"Vänta. Arbetar med beräkning..." strängen visas inte. I stället tilldelas den till variabeln $a , som i följande exempel:

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

Både informationssträngen och resultatet av beräkningen returneras av funktionen och tilldelas till variabeln $a .

Om du vill visa ett meddelande i din funktion, med början i PowerShell 5.0, kan du använda Information strömmen. Koden nedan korrigerar exemplet ovan med hjälp av cmdleten Write-Information med hjälp InformationAction av Fortsätt.

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

Returnera värden och pipelinen

När du returnerar en samling från skriptblocket eller -funktionen avregistrerar PowerShell automatiskt medlemmarna och skickar dem en i taget via pipelinen. Detta beror på PowerShells en-i-taget-bearbetning. Mer information finns i about_pipelines.

Det här konceptet illustreras av följande exempelfunktion som returnerar en matris med tal. Utdata från funktionen skickas till cmdleten Measure-Object som räknar antalet objekt i pipelinen.

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

Om du vill tvinga ett skriptblock eller en funktion att returnera samlingen som ett enda objekt till pipelinen använder du någon av följande två metoder:

  • Unary-matrisuttryck

    Om du använder ett unary-uttryck kan du skicka returvärdet nedåt i pipelinen som ett enda objekt, vilket illustreras i följande exempel.

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

    Du kan också använda cmdleten Write-Output med parametern NoEnumerate . I exemplet nedan används cmdleten Measure-Object för att räkna de objekt som skickas till pipelinen från exempelfunktionen med nyckelordet return .

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

Se även