about_Return
簡短描述
結束目前的範圍,可以是函式、腳本或腳本區塊。
詳細描述
return
關鍵詞會結束函式、腳本或腳本區塊。 它可以用來在特定時間點結束範圍、傳回值,或指出範圍結尾已經到達。
熟悉 C 或 C# 等語言的使用者可能會想要使用 return
關鍵詞來讓範圍保持明確邏輯。
在 PowerShell 中,即使沒有包含 Return 關鍵詞的語句,每個語句的結果也會傳回為輸出。 C 或 C# 等語言只會傳回 關鍵詞所 return
指定的值或值。
注意
從 PowerShell 5.0 開始,PowerShell 會使用正式語法新增語言來定義類別。 在 PowerShell 類別的內容中,除了您使用 return
語句指定的內容之外,方法不會輸出任何內容。 您可以在 about_Classes深入瞭解 PowerShell 類別。
語法
關鍵詞的 return
語法如下所示:
return [<expression>]
return
關鍵詞可以單獨出現,也可以接著值或表達式,如下所示:
return
return $a
return (2 + $a)
範例
如果符合條件,下列範例會 return
使用 關鍵詞來結束特定點的函式。 奇數不會乘以,因為 return 語句會在該語句執行之前結束。
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
在 PowerShell 中,即使 return
未使用 關鍵詞,也可以傳回值。
會傳回每個語句的結果。 例如,下列語句會傳回 變數的值 $a
:
$a
return
下列語句也會傳回 的值 $a
:
return $a
下列範例包含一個語句,旨在讓使用者知道函式正在執行計算:
function calculation {
param ($value)
"Please wait. Working on calculation..."
$value += 73
return $value
}
$a = calculation 14
「請稍候。 計算中...字串不會顯示。 相反地,它會指派給 $a
變數,如下列範例所示:
PS> $a
Please wait. Working on calculation...
87
函式會傳回參考字串和計算結果,並指派給 $a
變數。
如果您想要在函式內顯示訊息,請從 PowerShell 5.0 開始,您可以使用資料流 Information
。 下列程式代碼會使用 Write-Information
Cmdlet 搭配 InformationAction
continue 來更正上述範例。
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
傳回值和管線
當您從腳本區塊或函式傳回集合時,PowerShell 會自動取消卷動成員,並一次透過管線傳遞一個成員。 這是因為PowerShell的一次性處理。 如需詳細資訊,請參閱 about_pipelines。
下列傳回數位數位數組的範例函式會說明這個概念。 函式的輸出會透過管線傳送至 Measure-Object
Cmdlet,以計算管線中的物件數目。
function Test-Return
{
$array = 1,2,3
return $array
}
Test-Return | Measure-Object
Count : 3
Average :
Sum :
Maximum :
Minimum :
Property :
若要強制文本區塊或函式將集合當做單一對象傳回管線,請使用下列兩種方法之一:
一元陣語表示式
利用一元表達式,您可以將傳回值以單一物件的形式傳送至管線,如下列範例所示。
function Test-Return { $array = 1,2,3 return (, $array) } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :
Write-Output
with NoEnumerate 參數。您也可以使用
Write-Output
Cmdlet 搭配 NoEnumerate 參數。 下列範例會Measure-Object
使用 Cmdlet,依 關鍵詞計算從範例return
函式傳送至管線的物件。function Test-Return { $array = 1, 2, 3 return Write-Output -NoEnumerate $array } Test-Return | Measure-Object
Count : 1 Average : Sum : Maximum : Minimum : Property :