エルビス演算子 【elvis operator】
概要
エルビス演算子(elvis operator)とは、いくつかのプログラミング言語に用意されている演算子の一つで、疑問符とコロンを組み合わせて「?:」と記述するもの。左辺が真なら左辺値を、それ以外なら右辺値を返す。「x ?: y」のように左辺と右辺を取る二項演算子で、左辺の値を評価して真偽値の「真」(true)や言語仕様によって真の代わりとなる値(非Null値、0以外の数値、空でない文字列など)の場合は左辺値を返し、「偽」(false)や偽とみなされる値(Null、undefined、0、空文字列など)の場合は右辺値の評価結果を返す。
このような演算はエルビス演算子が無くても三項演算子(条件演算子)を用いて「x ? x : y」のように記述することができるが、「値が存在すればその値を返し、存在しなければ新しい値を返す」処理は頻繁に行われることから、第二項を省略した「x ?: y」を専用の演算子として定義する言語が現れた。C++言語やPHPのように三項演算子の第二項の省略によって実現している場合もある。
なお、「値が存在しない場合のみ新しい値を返す」処理は、JavaScript、Python、PerlなどではOR演算子(||)の短絡評価を利用して記述することができる。これらの言語では「x || y」のように記述すると、xが真か値をすでに持っている場合はxの値を返して処理を打ち切り、偽あるいは値を持たない場合のみyの評価結果が返される。
「エルビス」の語源は米著名ロックミュージシャンのエルビス・プレスリー(Elvis Presley)で、彼を表す欧米の顔文字「?:j」に由来する。欧米の顔文字(emoticon)は横倒し式で、「?」が頭、「:」が両目、「j」が口を表す。疑問符上部の丸い部分で彼の膨らんだ前髪を表現している。
(2023.7.28更新)