PowerShell: 関数の引数の設定方法(初期値、param、$args等)
PowerShellの関数で引数を設定する方法を解説します。 オーソドックスな設定方法からparamキーワードを使った方法、 自動変数$argsを使う方法など複数のやり方があります。 順番に紹介していきます。
引数設定の基本的な方法
一番わかりやすいのがこの方法です。 関数名の後の()丸括弧内にパラメータを記述します。 引数が複数ある場合はカンマで区切ります。
function 関数名(引数1, 引数2){ 処理 }
次の関数testは2つの引数を掛け算した結果を返します。 $p1と$p2が引数です。
function test($p1, $p2){ return $p1 * $p2 } test 2 3 # 実行結果 6
関数を呼び出すときは引数をスペース区切りにします。 カンマ区切りではないことに注意してください。
初期値を指定する
引数に初期値を設定したい場合は「引数 = 値」と記述します。
次のコードは引数$p1の初期値に1、p2の初期値に10を指定しています。
関数testを呼び出す際に引数を指定せずに呼び出した結果、
初期値同士が掛け算されて「1 * 10 = 10」となっています。
function test($p1 = 1, $p2 = 10){ return $p1 * $p2 } test # 実行結果 10
paramキーワード
次はparamキーワードを使った引数の設定方法です。 paramの後に丸括弧で囲った部分に引数を記述します。
function 関数名(){ param(引数1, 引数2) 処理 }
次のコードは関数testをparamキーワードを使って書き換えました。
function test(){ param($p1, $p2) return $p1 * $p2 } test 4 5 # 実行結果 20
最初に紹介した基本的な書き方と、 paramキーワードを使う方法のどちらでもわかりやすい方法で書けば大丈夫です。
$args変数
最後に自動変数$argsを使う方法です。 $argsはシステムで自動的に設定される変数で 引数の値が格納されています。 配列変数なのでインデックスを指定。 1番目の引数のインデックスは0で 「$args[0]」と記述します。
次の関数testは自動変数$argsを使って引数の値を取得しています。
function test(){ return $args[0] * $args[1] } test 5 6 # 実行結果 30
この方法は引数設定をしなくて良いというメリットがある一方で、 どんな引数があるのかがわかりにくいというデメリットもあります。
(まとめ記事: PowerShell 関数)