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 przeczytać 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ć zgodne z wartością lub wyrażeniem 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. Nieparzyste liczby 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 można zwracać nawet wtedy, gdy return słowo kluczowe nie jest używane. Zwracane są wyniki każdej instrukcji. 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ę przeznaczoną do powiadom 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 przypisywany 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 przypisane 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 funkcją InformationActionKontynuuj.

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 lub funkcji skryptu 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 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, 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ładzie Measure-Object użyto polecenia cmdlet do zliczania obiektów wysyłanych do potoku z przykładowej funkcji za pomocą słowa kluczowego return .

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

Zobacz też