Null合体演算子
nullはF#においては値や変数として通常用いられない。しかしながら、例えばF#のコードがC#から呼ばれるような場合にnullが登場する。
F#は組み込みのnull合体演算子を持っていないが、必要に応じてカスタムの演算子として定義することができる。
このカスタムの演算子はC#の組み込みのnull合体演算子と同様に用いることができる。
PHPではPHP 7以降でnull合体演算子??を利用できる。
PHP 7でnull合体演算子??が追加される以前から、三項演算子として用いられる?:条件演算子の真ん中の部分を二項演算子を作るために除外することができた(PHP 5.3以降)。最初は関連した言語に登場したので、顔文字と似ていることからエルビス演算子としても知られている。
しかし、PHPの文法上の不幸なエラーにより、三項の条件演算子はPHPにおいては期待される動作と違い左結合性であるため、 複数の条件演算子を組み合わせると極めて直感的でない結果となる。エルビス演算子は(三項演算子の場合と同様に)チェーン表記した際にこの文法上の制約にさらされる。
?:演算子は、(他のいくつかのプログラミング言語でのnull合体演算子と同様に)最初の項がTRUEと評価されるときに最初の項を返す。また、最初の項に未定義の変数が与えられた場合にNOTICEレベルの警告を発生する。
一方、??演算子は未定義の変数を与えることができ、また、最初の項がNULLまたは未定義の変数でなければ、整数0や空の配列などFALSEと評価される値であっても最初の項を返す。この点において、演算子はPHPのisset()疑似関数と同様に振る舞う。
これらの演算子は、PHPにおける三項演算子の(通常の)用法と同様に、結果を変数に代入する代わりにechoやreturnにも用いることができる。