ja-JP/about_Return.help.txt

TOPIC
    about_Return

簡単な説明
    現在のスコープ(関数、スクリプト、スクリプトブロック)を抜ける return
    キーワードについて説明します。

詳細な説明
    return キーワードは、関数、スクリプト、またはスクリプトブロックを抜けます。
    特定の地点でスコープを抜けるため、値を返すため、あるいはスコープの末尾に
    到達したことを示すために使えます。

    C や C# のような言語に慣れているユーザーは、スコープを抜けるロジックを
    明示的にするために return キーワードを使いたくなるかもしれません。

    PowerShell では、return キーワードを含むステートメントがなくても、各
    ステートメントの結果が出力として返されます。C や C# のような言語では、
    return キーワードで指定された値だけが返されます。

    注: PowerShell 5.0 以降では、正式な構文でクラスを定義するための言語機能が
    追加されました。PowerShell クラスのコンテキストでは、return ステートメント
    で指定したもの以外、メソッドからは何も出力されません。PowerShell クラスに
    ついては about_Classes で詳しく説明しています。

    構文

    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

    "Please wait. Working on calculation..." という文字列は表示されません。
    代わりに、次の例のように $a 変数に代入されます。

        PS> $a
        Please wait. Working on calculation...
        87

    情報文字列と計算結果の両方が関数から返され、$a 変数に代入されます。

    関数内でメッセージを表示したい場合は、PowerShell 5.0 以降では Information
    ストリームを使えます。次のコードは、InformationAction を Continue に設定
    した Write-Information コマンドレットを使って、上記の例を修正したものです。

        function Calculation {
            param ($Value)

            Write-Information "Please wait. Working on calculation..." -InformationAction Continue
            $Value += 73
            return $Value
        }

    これで、情報メッセージはホストに表示され、変数には代入されません。

        PS> $a = Calculation 14
        Please wait. Working on calculation...
        PS> $a
        87

    戻り値とパイプライン

    スクリプトブロックや関数からコレクションを返すと、PowerShell はその要素を
    自動的に展開(アンロール)し、パイプラインを通じて 1 つずつ渡します。これは
    PowerShell の 1 件ずつの処理によるものです。詳細は about_Pipelines を
    参照してください。

    この概念は、数値の配列を返す次のサンプル関数で示されます。関数の出力は
    Measure-Object コマンドレットにパイプされ、パイプライン内のオブジェクト数を
    数えます。

        function Test-Return
        {
            $array = 1,2,3
            return $array
        }
        Test-Return | Measure-Object

        Count : 3
        Average :
        Sum :
        Maximum :
        Minimum :
        Property :

    スクリプトブロックや関数にコレクションを単一のオブジェクトとしてパイプ
    ラインへ返させるには、次の 2 つの方法のいずれかを使います。

    - 単項配列式

      単項式を利用すると、次の例のように戻り値を単一のオブジェクトとして
      パイプラインに送れます。

        function Test-Return
        {
            $array = 1,2,3
            return (, $array)
        }
        Test-Return | Measure-Object

        Count : 1
        Average :
        Sum :
        Maximum :
        Minimum :
        Property :

    - NoEnumerate パラメーター付きの Write-Output

      Write-Output コマンドレットに NoEnumerate パラメーターを付けて使う
      こともできます。次の例は、return キーワードによってサンプル関数から
      パイプラインに送られたオブジェクト数を Measure-Object コマンドレットで
      数えます。

        function Test-Return
        {
            $array = 1, 2, 3
            return Write-Output -NoEnumerate $array
        }

        Test-Return | Measure-Object

        Count : 1
        Average :
        Sum :
        Maximum :
        Minimum :
        Property :

関連項目
    about_Classes
    about_Functions
    about_Language_Keywords
    about_Scopes
    about_Script_Blocks
    Write-Information

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP