記事検索

検索ワードを入力してください。
Sky Tech Blog
PowerShellの​関数戻り値の​仕様に​ついて

PowerShellの​関数戻り値の​仕様に​ついて

ここでは、PowerShellの関数の戻り値の仕様について説明します。CやC#とは異なり、各ステートメントの結果が戻り値に含まれるため、意図しない戻り値が発生することがあります。

PowerShellはfunctionというキーワードを使って関数を作成することができます。

PowerShellの関数の戻り値の仕様はCやC#などの言語とは違っており、それらの言語に慣れたユーザーは誤って使ってしまいがちです。

今回は、そのPowerShellの関数の戻り値の仕様についてご紹介いたします。

以下のコードを作成して、実行します。

function Add() {
    param ($x, $y)

    if ($y -eq 0) {
        New-Item -ItemType Directory -Path "C:\temp\x" -Force
    }

    return $x + $y
}

$result1 = Add 1 2
Write-Host $result1

$result2 = Add 1 0
Write-Host $result2

$result1は 3 です。
これはCやC#などの言語に慣れたユーザーにとっても想定通りの戻り値だと思います。

続いて、$result2ですが、

戻り値がObject[2]になっています。

これはどういうことかというと、PowerShellはreturnキーワードを使わなくても、各ステートメントの結果が戻り値として含まれます。
つまり、先ほどのコードの場合、New-Itemコマンドレットの結果もAdd関数の戻り値として含まれることになります。

各ステートメントの結果を戻り値として含めないようにするには、その出力を[void]でキャストするか、Out-Nullにパイプ処理するなどの方法がありますが、CやC#に慣れたユーザーであれば、functionではなく、クラスのメソッドとして作成する方が扱いやすいのではないかと思います。
クラスのメソッドであれば、returnする値だけが戻り値となります。


\シェアをお願いします!/
  • X
  • Facebook
  • LINE
キャリア採用募集中!

入社後にスキルアップを目指す若手の方も、ご自身の経験を幅広いフィールドで生かしたいベテランの方も、お一人おひとりの経験に応じたキャリア採用を行っています。

Sky株式会社のソフトウェア開発や製品、採用に関するお問い合わせについては、下記のリンクをご確認ください。
お問い合わせ
ホーム