2020.01.06
PowerShell 7 処理が空の関数の戻り値
概要
PowerShellで、処理が空の関数{}
の戻り値(便宜上$(& {})
で表現する )は要素脱落である。 これは単純なnull値である$null
と-eq
で比較すると同じ扱いになる。 しかし実態は異なるので、nullと同じだと考えてはならない。
パイプライン処理で要素を変換した場合、$null
は形式上存在する要素とみなされ、 要素数にカウントされる。 しかし、$(& {})
は形式上も存在せず、要素数にカウントされない。
PowerShell7で導入された、 Null合体演算子値A ?? 値B
(値Aを基本返すが、値Aが$nullの時は値Bを返す)で、 その違いを示す。
コード例
以下のコードは出力が要素数1つの配列@(1)
である。
$null, 0|ForEach-Object {$_ ?? $(& {})};
以下のコードは、出力が要素数2つの配列@($null, 1)である。
$null, 0|ForEach-Object {$_ ?? $null};
まとめ
PowerShellで要素を脱落させる場合は、 $(& {})
への変換として実現させることができる。 $null
と$(& {})
はパイプライン処理でのふるまいが全く異なるので、 -eq
で比較して同じだからと言って、
初級インフラエンジニアにオススメ連載リンク
ネットワーク学習の登竜門・・
ゼロからのCCNA独学講座
Linuxの取り扱いを基礎から学ぶ
Linux資格 「LPIC-Lv1」徹底解説