Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
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-ObjectCount : 1 Average : Sum : Maximum : Minimum : Property :Write-Outputs parametrem NoEnumerate.Můžete také použít rutinu
Write-Outputs parametrem NoEnumerate. Následující příklad používá rutinuMeasure-Objectke spočítání objektů odeslaných do kanálu z ukázkové funkce pomocí klíčového slovareturn.function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-ObjectCount : 1 Average : Sum : Maximum : Minimum : Property :