Sdílet prostřednictvím


o vrácení

Krátký popis

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

Dlouhý popis

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

Uživatelé, kteří jsou obeznámeni s jazyky, jako je C nebo C#, mohou chtít použít klíčové slovo return, aby logiku opouštění oboru učinili explicitní.

V PowerShellu se výsledky každého příkazu vrátí jako výstup, a to i bez příkazu, který obsahuje return klíčové slovo. 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í příkazu return. Další informace o třídách PowerShellu najdete v about_Classes.

Syntax

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

return [<expression>]

Klíčové slovo return 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á klíčové slovo return k ukončení funkce v určitém bodě, pokud je splněna podmínka. 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 se nepoužívá klíčové slovo return. Vrátí se výsledky každého příkazu. Například následující příkazy vrátí hodnotu proměnné $a:

$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. Pracuje se na výpočtu, řetězec se nezobrazuje... Místo toho se přiřadí k proměnné $a, 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í $a proměnné.

Pokud chcete ve své funkci zobrazit zprávu počínaje PowerShellem 5.0, můžete použít Information stream. Následující kód opraví výše uvedený příklad pomocí rutiny Write-Information s InformationAction nastaveným na Continue.

function Calculation {
    param ($Value)

    Write-Information "Please wait. Working on calculation..." -InformationAction Continue
    $Value += 73
    return $Value
}

Teď se informační zpráva zobrazí v hostiteli a nepřiřazuje se k proměnné.

PS> $a = Calculation 14
Please wait. Working on calculation...
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á do rutiny 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 :

Chcete-li vynutit, aby skriptblock nebo funkce vrátila kolekci jako jeden objekt do kanálu, použijte jednu z následujících dvou metod:

  • Unární maticový výraz

    Při použití unárního výrazu můžete vrácenou hodnotu předat dolů datovým tokem jako jednotlivý 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.

    Můžete také použít rutinu Write-Output s parametrem NoEnumerate. Následující příklad používá rutinu Measure-Object ke spočítání objektů odeslaných do kanálu z ukázkové funkce pomocí klíčového slova 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é