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 |