「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式 や パターンマッチング を使って分岐処理をスッキリ書く方法を紹介予定です。
ただの分岐じゃない、スマートな分岐へ。スマ分。
それではまた次回、分岐の世界でお会いしましょう。