PowerShellに三項演算子が導入されました

2019.09.20

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

しばたです。

本日PowerShell 7 Preview.4がリリースされ、このバージョンの新機能の一つとして三項演算子が導入されました。
PowerShell Teamのアナウンスは以下となり、本記事ではこの内容をベースに簡単に解説を入れていきます。

三項演算子の導入に至るまで

去年に個人ブログでも書きましたがPowerShellではPowerShell 1.0リリース直後から要望があったものの三項演算子はこれまで導入されませんでした。

PowerShellがPowerShell Coreとしてオープンソースになった後もGitHubのIssueで三項演算子の導入に対する議論が行われ続け、今回RFCおよび実装のプルリクでのレビューを経て遂に導入に至りました。

導入に至るまでの詳細はこれらのリンク先をご覧ください。

PowerShellの三項演算子

PowerShellの三項演算子はC#と同様の書式

<condition> ? <consequent> : <alternative>

の構文となります。
ざっくり以下の様な感じで利用できます。

$IsWindows ? "yes" : "no"

$IsLinux ? "yes" : "no"

また、Show-AstモジュールでASTを覗いてみるとこんな感じでTernaryExpressionという新しい式が導入されていることがわかります。

注意事項

現時点では三項演算子は試験的な機能として導入されています。
プレビュー版のPowerShellでは既定で試験的な機能が利用可能となっているためただちに三項演算子を利用できますが、試験的な機能を明示して無効にしている場合は以下のコマンドで機能を有効にしてください。

# Scopeは環境に応じて変えてください
Enable-ExperimentalFeature -Name PSTernaryOperator -Scope CurrentUser

最後に

簡単ですがPowerShellの三項演算子について紹介しました。
今回リリースされたPowerShell 7 Preview.4には他にも面白い機能が追加されていますので改めて紹介していきたいと思います。