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 搭配 InformationActioncontinue 來更正上述範例。

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 :
    

另請參閱