about_Return

Krátký popis

Ukončí aktuální obor, což může být funkce, skript nebo blok skriptu.

Dlouhý popis

Klíčové return slovo ukončí blok funkce, skriptu nebo skriptu. Dá se použít k ukončení oboru v určitém bodě, k vrácení hodnoty nebo k označení, že byl dosažen konec oboru.

Uživatelé, kteří znají jazyky, jako je C nebo C#, můžou chtít použít return klíčové slovo, aby logiku opuštění oboru explicitně opustili.

V PowerShellu se výsledky každého příkazu vrátí jako výstup, a to i bez příkazu, který obsahuje klíčové slovo Return. Jazyky jako C nebo C# vrací pouze hodnotu nebo hodnoty určené klíčovým slovem return .

Poznámka:

Počínaje PowerShellem 5.0 jsme přidali jazyk PowerShellu pro definování tříd pomocí formální syntaxe. V kontextu třídy PowerShellu není výstupem metody kromě toho, co zadáte pomocí return příkazu. Další informace o třídách PowerShellu najdete v about_Classes.

Syntaxe

Syntaxe klíčového return slova je následující:

return [<expression>]

Klíčové return slovo se může zobrazit samostatně, nebo za ním může následovat hodnota nebo výraz, a to následujícím způsobem:

return
return $a
return (2 + $a)

Příklady

Následující příklad používá return klíčové slovo k ukončení funkce v určitém bodě, pokud je splněn podmíněný. Lichá čísla se nevynásobí, protože příkaz return se ukončí před provedením příkazu.

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

V PowerShellu je možné vrátit hodnoty i v případě, že return se klíčové slovo nepoužívá. Vrátí se výsledky každého příkazu. Například následující příkazy vrátí hodnotu $a proměnné:

$a
return

Následující příkaz také vrátí hodnotu $a:

return $a

Následující příklad obsahuje příkaz, který má uživateli dát vědět, že funkce provádí výpočet:

function calculation {
    param ($value)

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

$a = calculation 14

"Počkejte prosím. Práce na výpočtu..." řetězec se nezobrazuje. Místo toho je přiřazena k $a proměnné, jak je znázorněno v následujícím příkladu:

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

Informační řetězec i výsledek výpočtu vrátí funkce a přiřadí se $a proměnné.

Pokud chcete ve své funkci zobrazit zprávu, která začíná v PowerShellu Information 5.0, můžete stream použít. Následující kód opraví výše uvedený příklad pomocí Write-Information rutiny s příponou InformationActionContinue.

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

Návratové hodnoty a kanál

Když vrátíte kolekci z bloku skriptu nebo funkce, PowerShell automaticky zruší registraci členů a předá je po jednom prostřednictvím kanálu. Důvodem je jednorázové zpracování PowerShellu. Další informace najdete v tématu about_pipelines.

Tento koncept je ilustrován následující ukázkovou funkcí, která vrací matici čísel. Výstup funkce se předá rutině Measure-Object , která spočítá počet objektů v kanálu.

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

Pokud chcete vynutit, aby blok skriptu nebo funkce vrátily kolekci jako jeden objekt do kanálu, použijte jednu z následujících dvou metod:

  • Unární maticový výraz

    Pomocí unárního výrazu můžete odeslat vrácenou hodnotu kanálu jako jeden objekt, jak je znázorněno v následujícím příkladu.

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

    Rutinu Write-Output můžete použít také s parametrem NoEnumerate . Následující příklad používá rutinu Measure-Object k počítání objektů odeslaných do kanálu z ukázkové funkce klíčovým slovem return .

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

Viz také