🌊
[Feature #13820] 左辺が `nil` のときのみ右辺を評価する演算子を追加する提案
[Feature #13820] Add a nil coalescing operator
- 左辺が
nil
のときのみ右辺を評価する演算子を追加する提案 -
||
とは違って『nil
のみを対象とする』みたいなやつ-
||
はnil
だけではなくてfalse
も条件になるがfalse
は除く演算子を追加する提案
-
# これは || と同じ
a = 0 ?? 55 # = 0
a = nil ?? 55 # = 55
# これは右辺を返す
a = false ?? 55 # = false
- モチベーションとしては
a = flag ?? true
などするときにexpr
がfalse
の場合はfalse
で評価したい、みたいなところですかねー-
||
だと左辺ではなくて右辺が返ってくる
-
- ただし Ruby の構文では
??
自体は有効な構文ではあるんですよねえ-
?? => # "?"
となる
-
- 最近コメントされていたのでこのチケットに気づいたんですが Ruby 上で
nil
とfalse
を区別したいケースがどれだけあるのか次第なんですかねー- https://bugs.ruby-lang.org/issues/13820#note-15
- 実際に
&.
はnil
とfalse
を明確に区別している
- 個人的にめちゃくちゃほしいわけではないけどあれば普通に使いそう
Discussion
これは、たまに欲しくなる機能ですね。