about_Return
Krótki opis
Zamyka bieżący zakres, który może być funkcją, skryptem lub blokiem skryptu.
Długi opis
Słowo return
kluczowe zamyka funkcję, skrypt lub blok skryptu. Może służyć do zamykania zakresu w określonym punkcie, zwracania wartości lub wskazywania, że osiągnięto koniec zakresu.
Użytkownicy, którzy znają języki, takie jak C lub C#, mogą chcieć użyć return
słowa kluczowego , aby logika pozostawienia zakresu było jawne.
W programie PowerShell wyniki każdej instrukcji są zwracane jako dane wyjściowe, nawet bez instrukcji zawierającej słowo kluczowe Return. Języki takie jak C lub C# zwracają tylko wartość lub wartości określone przez return
słowo kluczowe .
Uwaga
Począwszy od programu PowerShell 5.0, program PowerShell dodał język do definiowania klas przy użyciu składni formalnej. W kontekście klasy programu PowerShell nic nie jest danymi wyjściowymi metody, z wyjątkiem tego, co określa się za pomocą instrukcji return
. Więcej informacji na temat klas programu PowerShell można dowiedzieć się w about_Classes.
Składnia
Składnia słowa kluczowego return
jest następująca:
return [<expression>]
Słowo return
kluczowe może być wyświetlane samodzielnie lub może być po nim wartość lub wyrażenie w następujący sposób:
return
return $a
return (2 + $a)
Przykłady
W poniższym przykładzie użyto return
słowa kluczowego , aby zamknąć funkcję w określonym punkcie, jeśli zostanie spełniony warunek. Liczby nieparzyste nie są mnożone, ponieważ instrukcja return kończy działanie przed wykonaniem tej instrukcji.
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
W programie PowerShell wartości mogą być zwracane nawet wtedy, gdy return
słowo kluczowe nie jest używane.
Wyniki każdej instrukcji są zwracane. Na przykład następujące instrukcje zwracają wartość zmiennej $a
:
$a
return
Poniższa instrukcja zwraca również wartość elementu $a
:
return $a
Poniższy przykład zawiera instrukcję, która ma poinformować użytkownika, że funkcja wykonuje obliczenia:
function calculation {
param ($value)
"Please wait. Working on calculation..."
$value += 73
return $value
}
$a = calculation 14
"Czekaj. Praca nad obliczeniami..." ciąg nie jest wyświetlany. Zamiast tego jest ona przypisana do zmiennej $a
, jak w poniższym przykładzie:
PS> $a
Please wait. Working on calculation...
87
Zarówno ciąg informacyjny, jak i wynik obliczenia są zwracane przez funkcję i przypisywane do zmiennej $a
.
Jeśli chcesz wyświetlić komunikat w funkcji, począwszy od programu PowerShell 5.0, możesz użyć strumienia Information
. Poniższy kod poprawia powyższy przykład przy użyciu Write-Information
polecenia cmdlet z wartością InformationAction
Kontynuuj.
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
Wartości zwracane i potok
Po powrocie kolekcji z bloku skryptu lub funkcji program PowerShell automatycznie wyrejestruje elementy członkowskie i przekazuje je pojedynczo przez potok. Jest to spowodowane jednorazowym przetwarzaniem programu PowerShell. Aby uzyskać więcej informacji, zobacz about_pipelines.
Ta koncepcja jest zilustrowana przez następującą przykładową funkcję, która zwraca tablicę liczb. Dane wyjściowe funkcji są przesyłane potokiem do Measure-Object
polecenia cmdlet, które zlicza liczbę obiektów w potoku.
function Test-Return
{
$array = 1,2,3
return $array
}
Test-Return | Measure-Object
Count : 3
Average :
Sum :
Maximum :
Minimum :
Property :
Aby wymusić zwrócenie kolekcji jako pojedynczego obiektu do potoku przez blok skryptu lub funkcję, użyj jednej z następujących dwóch metod:
Wyrażenie tablicy jednoargumentowej
Korzystając z wyrażenia jednoargumentowego, możesz wysłać wartość zwracaną w dół potoku jako pojedynczy obiekt, jak pokazano w poniższym przykładzie.
function Test-Return { $array = 1,2,3 return (, $array) } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
Write-Output
z parametrem NoEnumerate .Możesz również użyć
Write-Output
polecenia cmdlet z parametrem NoEnumerate . W poniższym przykładzieMeasure-Object
użyto polecenia cmdlet do zliczania obiektów wysyłanych do potoku z przykładowejreturn
funkcji przez słowo kluczowe .function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :