エルビス演算子

出典: フリー百科事典『ウィキペディア(Wikipedia)』
ナビゲーションに移動 検索に移動

エルビス演算子(英語: elvis operator)は、いくつかのプログラミング言語にある、Null合体演算子に似た機能(意味)の演算子で、字句構文は ?: である。三項条件演算子(? :)と違い、この2文字で1つの演算子であり、意味的には三項演算子の第二項(A ? B : CのB)が無いもの、というような機能を持っている。

[編集]

エルビス演算子をサポートした言語では以下のように記述すると、xにはf()結果がtrueと判定される場合にはその結果を、それ以外ではg()がセットされる。

x = f() ?: g()

これは以下の表記と同値である。

x = f() ? f() : g()

ただし、f()がtrueの場合でも、二度評価されることはない。すなわち

x = f()
x = x ? x : g()

名称[編集]

エルビス演算子はエルビス・プレスリー顔文字(emoticon)に形が似ていることからこう呼ばれる[1][2]

サポートする言語[編集]

  • GNU C/C++(GCCによる拡張)では、三項演算子の第二項を省略することができる[3] GCC 2.95.3より使用可能[4] (March 2001)。
  • PHPでは PHP 5.3より ? : の第二項を省略可能[5] (June 2009)。
  • Apache Groovyではエルビス演算子?:は独立したオペレータとして文書化されている[6]。この機能はGroovy 1.5より追加された[7] (December 2007). GroovyはGNU GやPHPと異なり? :の第二項を省略することは許されておらず、?:の間にスペースを入れることはできない。
  • Fantom ではエルビス演算子の第一項をnullと比較する。
  • Kotlinでは式を返すことができる[8]。よくあるパターンとしてreturnキーワードを返す(val foo = bar() ?: return)。
  • Gosuでは第一項がnullの場合も第二項を返す。
  • C#ではnull合体演算子がエルビス演算子と同一視されることがあるが[9][10]、null合体演算子とは挙動が異なる。

OR演算子によるイディオム[編集]

PerlPythonJavascriptなどではOR演算子(||またはor)が同様の働きをする。すなわち第一項が真偽値としてtrueで評価される場合はその値を、そうでない場合は第二項を返す。

関連項目[編集]

参考[編集]