about_Return
Kort beskrivning
Avslutar det aktuella omfånget, som kan vara en funktion, ett skript eller ett skriptblock.
Lång beskrivning
Nyckelordet return
avslutar ett funktions-, skript- eller skriptblock. Den kan användas för att avsluta ett omfång vid en viss punkt, för att returnera ett värde eller för att indikera att slutet av omfånget har nåtts.
Användare som är bekanta med språk som C eller C# kanske vill använda nyckelordet return
för att göra logiken för att lämna ett omfång explicit.
I PowerShell returneras resultatet för varje instruktion som utdata, även utan en instruktion som innehåller nyckelordet Retur. Språk som C eller C# returnerar endast det värde eller de värden som anges av nyckelordet return
.
Kommentar
Från och med PowerShell 5.0 har PowerShell lagt till språk för att definiera klasser med hjälp av formell syntax. I kontexten för en PowerShell-klass är ingenting utdata från en metod förutom det du anger med hjälp av en return
-instruktion. Du kan läsa mer om PowerShell-klasser i about_Classes.
Syntax
Syntaxen för nyckelordet return
är följande:
return [<expression>]
Nyckelordet return
kan visas ensamt eller följas av ett värde eller uttryck på följande sätt:
return
return $a
return (2 + $a)
Exempel
I följande exempel används nyckelordet return
för att avsluta en funktion vid en viss punkt om ett villkor uppfylls. Udda tal multipliceras inte eftersom retursatsen avslutas innan instruktionen kan köras.
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
I PowerShell kan värden returneras även om nyckelordet return
inte används.
Resultatet av varje instruktion returneras. Följande uttryck returnerar till exempel värdet för variabeln $a
:
$a
return
Följande instruktion returnerar också värdet $a
för :
return $a
Följande exempel innehåller en instruktion som är avsedd att låta användaren veta att funktionen utför en beräkning:
function calculation {
param ($value)
"Please wait. Working on calculation..."
$value += 73
return $value
}
$a = calculation 14
"Vänta. Arbetar med beräkning..." strängen visas inte. I stället tilldelas den till variabeln $a
, som i följande exempel:
PS> $a
Please wait. Working on calculation...
87
Både informationssträngen och resultatet av beräkningen returneras av funktionen och tilldelas till variabeln $a
.
Om du vill visa ett meddelande i din funktion, med början i PowerShell 5.0, kan du använda Information
strömmen. Koden nedan korrigerar exemplet ovan med hjälp av cmdleten Write-Information
med hjälp InformationAction
av Fortsätt.
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
Returnera värden och pipelinen
När du returnerar en samling från skriptblocket eller -funktionen avregistrerar PowerShell automatiskt medlemmarna och skickar dem en i taget via pipelinen. Detta beror på PowerShells en-i-taget-bearbetning. Mer information finns i about_pipelines.
Det här konceptet illustreras av följande exempelfunktion som returnerar en matris med tal. Utdata från funktionen skickas till cmdleten Measure-Object
som räknar antalet objekt i pipelinen.
function Test-Return
{
$array = 1,2,3
return $array
}
Test-Return | Measure-Object
Count : 3
Average :
Sum :
Maximum :
Minimum :
Property :
Om du vill tvinga ett skriptblock eller en funktion att returnera samlingen som ett enda objekt till pipelinen använder du någon av följande två metoder:
Unary-matrisuttryck
Om du använder ett unary-uttryck kan du skicka returvärdet nedåt i pipelinen som ett enda objekt, vilket illustreras i följande exempel.
function Test-Return { $array = 1,2,3 return (, $array) } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
Write-Output
med parametern NoEnumerate .Du kan också använda cmdleten
Write-Output
med parametern NoEnumerate . I exemplet nedan används cmdletenMeasure-Object
för att räkna de objekt som skickas till pipelinen från exempelfunktionen med nyckelordetreturn
.function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
Se även
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för