PowerShell: ifステートメントを1行で書く
PowerShellではif文を1行で書くこともできます。 条件式や処理文が短い場合は1行で書いた方が見やすい場合もあります。 if文だけでなくPowerShell 7以降では三項演算子を使うこともできます。
ifステートメントで1行で書く
書き方はif、条件式、ブロックステートメントを同じ行に書くだけです。
if (条件式) {処理}
プログラミング言語によっては、1行で書く場合に 処理部分の{}括弧を省略できる言語もありますが、 PowerShellは()丸括弧も{}波括弧も省略できないため、 必ず書いてください。
具体的なコードは次のようになります。
# 1行 if ($n = 3) {$a = 100} # 複数行で書く場合 if ($n = 3) { $a = 100 }
シンプルなif文だけでなく、 if else文も1行で書くことができます。 文法的には可能ですが、 見にくくなるためおすすめはしません。
# 1行 if ($n = 3) {$a = 100} else {$a = 200} # 複数行で書く場合 if ($n = 3) { $a = 100 } else { $a = 200 }
三項演算子で1行で書く
if文の代わりに三項演算子を使って1行で書くこともできます。 ただし、三項演算子はPowerShell 7以降しか対応していません。 (関連記事: PowerShellのバージョンとエディションを確認する)
「?クエスチョンマーク」と「:コロン」を使って次のように記述します。
書式
条件式 ? True時の式 : False時の式
具体的なコードは次の通りです。
$n = 5 $n -eq 5 ? "Yes": "No" # Yes
条件式を()丸括弧で囲むと見やすくなります。
($n -eq 5) ? "Yes": "No"
式の結果を変数に代入したい場合は次のように記述します。
$n = 4 $a = ($n -eq 5) ? 100 : 200 $a # 200
1行で書く場合と書かない場合
通常、if文を1行で書くのは条件式や処理文が短い場合です。
条件式が論理演算子を使って長くなっている場合や、
処理文が長い場合に1行で書くと可読性が悪くなります。
その辺りは柔軟に対応してください。
(まとめ記事: PowerShell if文)