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文

PowerShell
PR