Null合体演算子
演算子だよ
値がNULLだったら違う値を入れたいときに使うよ
見た目は「??」(ハテナマークが2つ)を使うプログラミング言語が多いよ
簡単に書くよ
Null合体演算子(読:ヌルガッタイエンザンシ、ナルガッタイエンザンシ 英:null coalescing operator)とは
プログラミングで出てくる演算子のひとつ
であり
「その値はNull
(「何もないよー」を表す単語)かな~?Nullじゃなかったら、その値をそのまま使うよ~。Nullだったら、こっちの値を代わりに使うよ~」を意味する演算子
です。
演算子の見た目としては
「??」(ハテナマークが2つ)
を採用しているプログラミング言語が多いです。
詳しく書くよ
順番に見ていきましょう。
まずは予備知識として
・変数
・演算子
・NULL
について説明します。
「そんなの説明されなくても知ってるよ!」な人は適当に読み飛ばしてください。
変数は「プログラミング言語における『値を入れておく箱』」です。
処理の途中で値を入れたり、逆に取り出したりできます。
演算子は「どんな演算をするか表す記号」です。
「+」「-」「*(×)」「/(÷)」をはじめ、なんか いろいろ あります。
NULLは「何もないよー」を表す単語です。
数学の世界における「0(ゼロ)」みたいなものですね。
宇宙の話で言えば、ブラックホールみたいなものです。
以上を踏まえて
変数がNullだったら他の値を入れるときに使う演算子
が「Null合体演算子」です。
演算子の見た目としては「??」(ハテナマークが2つ)を採用しているプログラミング言語が多いです。
Perlの場合は「//」(スラッシュが2つ)だったり、例外もありますけどね。
例えばPHPでNull合体演算子を使うときは、以下のように書きます。
$ret = $hoge ?? "Nullだよ";
「$hoge」の中身がNullではない場合は「$hoge」の値が「$ret」に入ります。
Nullだった場合は「Nullだよ」という文章が「$ret」に入ります。
つまり、この内容は
if($hoge != null){
$ret = $hoge;
}else{
$ret = "Nullだよ";
}
と書くのと同じです。
実際には
if($hoge != null){
ではなく
if(!isset($hoge)){
と書くのが正しいですけどね。
PHPを知らない人でもイメージしやすいように、あえて
if($hoge != null){
と書いてみました。
実際にPHPでプログラミングする方は「isset()」を使うようにしてください。
話を戻します。
$ret = $hoge ?? "Nullだよ";
は
if($hoge != null){
$ret = $hoge;
}else{
$ret = "Nullだよ";
}
と同じです。
あと、ついでなので書くと「三項演算子」というのを使って
$ret = isset($hoge) ? $hoge : "Nullだよ";
と書いても同じ結果になります。
つまり、Null合体演算子なんてなくても何とかなるのです。
実際にNull合体演算子がないプログラミング言語もあります。
それでは、なんで有るかというと「書くのが楽だから」です。
プログラミングをやっているとですね。
1.値がNullか判定
2.Nullだったら別の値を入れる
をやりたい機会が腐るほどあります。
その処理を1行でサクっと書けるようにするための演算子がNull合体演算子です。
個人的には「Null合体演算子」よりも「Null置換演算子」の方が分かりやすいと思うのですけどね。
最初に作った人が「合体」にしたので、仕方ないですな。
一言でまとめるよ
まぁ「Null合体演算子」って単語が出てきたら「値がNull
(「何もないよー」を表す単語)か判定して、Nullだったら違う値を入れるときに使う演算子なんだな~」と お考えください。
おまけ
■検索してみる?






