【Unity×C#】if文省略形シリーズ 第三弾:||= と &&= ― 条件付きで代入したいだけなのに編

Unity

「Unityで書く C# if文省略形シリーズ」、最終回となる第三弾です。

今回はちょっと地味だけど、知ってると「おっ」と言わせられる、条件付き代入演算子たちをご紹介します。

テーマは ||=&&=
用途はシンプル、「特定の条件を満たすときだけ代入したい」。
ただそれだけ。でも、それをスマートに書けるなら、書いておきたい。
そんなあなたに贈ります。

||=:左辺がfalseやnullなら代入したいとき

まず登場するのは ||=
読み方は「オア・イコール」。ちょっと強そうな名前ですが、やってることは地味で堅実です。

🗂️普通バージョン

if (!isInitialized)
{
isInitialized = true;
}

まだ初期化されてなかったら、初期化する。
プログラミングの現場では親の顔より見た光景です。

✂️ ||=で省略したバージョン

isInitialized ||= true;

「false だったら true 入れといて」というワンライナー。
ちょっとだけカッコつけてる感がありますが、ちゃんと意味は通じます。
ちなみに null にも反応するので、意外と使いどころあります。

&&=:左辺がtrueなら代入したいとき

お次は &&=
こちらは「アンド・イコール」。演算子界の真面目枠です。
「条件が true のときだけ代入したい」っていう、やや控えめな気持ちをきれいに表現してくれます。

🗂️ 普通バージョン

if (isYaruki)
{
isVisible = true;
}

やる気があるなら、見えるようにする。
何だか人間関係っぽいですね。

✂️ &&=で省略したバージョン

isYaruki &&= isVisible;

「やる気あるなら、可視状態を更新してね」的なコード例。
短いですが、意味が通じるなら十分アリです。

まとめ

処理内容普通の書き方省略形
false/null なら代入if (!x) x = ...x ||= ...
true なら代入if (x) x = ...x &&= ...

読みやすさや意図の伝わりやすさが大事なので、無理に使う必要はありません。
でも、「あ、この場面は短くできるな」という気づきがあれば、使いこなしレベルが一段上がった証拠です。


次回予告:Switchも、もっと優雅に。

if文省略編は今回で終了となりますが、次回は if からちょっと離れて、switch式パターンマッチング を使って分岐処理をスッキリ書く方法を紹介予定です。
ただの分岐じゃない、スマートな分岐へ。スマ分。

それではまた次回、分岐の世界でお会いしましょう。

タイトルとURLをコピーしました