PowerShellは変数の型指定は必須ではない。が、判読性の観点で極力型指定をしていた。functionのParam()で[Boolean]指定時の留意点。
FileMaintenanceではfunctionの呼び出しで呼び出し毎に引数を全て指定していない。スクリプト全体で指定しているもの(定数と考えて良い)は、上位のスコープから落ちてくるのでParamで特段指定をする必要がないため。
しかしながらfunctionの判読性の観点では何が入力になっているのかが判る方が良い。そのため、スクリプト全体用に定義しているものは以下例で言うところの$GlobalSwitch,$GlobalValueの様に引数として必須ではないが、定数として使用しているのが判りやすい様に記述してみた。
ここで、[int]は良いのだが、[Boolean]に落とし穴がある。[Boolean]は$NULLを許容しないので、値を定義していないとエラーになってしまう。$TRUE,$FALSE,数値のみを受け入れる。
特定の状況のみで必要なフラグなどでは未定義状態の場合があるため、これは問題である。仕方がないので、[Boolean]だけは型指定をしない実装としておく、
Param(
[String]$Name ,
[int]$GlobalValue = $GlobalValue
[Boolean]$GlobalSwitch = $GlobalSwitch
)



0 コメント:
コメントを投稿