エルビス演算子とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > 百科事典 > エルビス演算子の意味・解説 

エルビス演算子

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2023/08/07 06:09 UTC 版)

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

Null合体演算子に似た制御機能を持つが、第一項の扱いが異なる。ただし、エルビス演算子にNull合体演算子の意味と役割を持たせている言語もある。

エルビス演算子を用いて以下のように記述すると、xには左式exprLの評価結果が真[注釈 1]と判定される場合にはその結果が、それ以外の場合には右式exprRの評価結果がセットされる。

x = exprL ?: exprR

これは三項演算子を使って以下のように書くこともできる。

x = exprL ? exprL : exprR

ただし、エルビス演算子ではexprLが真の場合でも、式が二度評価されることはない。すなわち、以下と同値である。

x = exprL
x = x ? x : exprR

名称

エルビス演算子はエルビス・プレスリー顔文字 (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ではエルビス演算子の第一項をnullと比較する。また、第二項に制御式を記述することもできる[8]。よくあるパターンとしてthrow式やreturn式を記述する(val foo = bar() ?: return)。
  • Gosuではエルビス演算子の第一項をnullと比較する。
  • C#ではnull合体演算子がエルビス演算子と同一視されることがあるが[9][10]、第一項をnullと比較するという点でエルビス演算子とは挙動が異なる。

短絡評価の論理和演算

PerlPythonJavaScriptなどでは論理和演算 (||またはor) が同様の働きをする。すなわち第1項が真値あるいは真値とみなされる値である場合は第2項を評価せずに第1項が論理和式の評価値となり(短絡評価)、第1項が偽値あるいは偽値とみなされる値である場合は第2項が論理和式の評価値となる。

Common LispScheme では、or特殊フォームがエルビス演算子に対応するが、エルビス演算子よりも汎用的であり、or特殊フォームは任意個数の項を受け入れる。第1項から順に真値が見つかるまで項を評価してゆき、真値が見つかったらそれ以降の項の評価せずに、見つかった真値をor特殊フォームの評価値として評価を終える。

関連項目

脚注

注釈

  1. ^ 言語によっては「非null」。

出典




英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「エルビス演算子」の関連用語

エルビス演算子のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



エルビス演算子のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのエルビス演算子 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。

©2025 GRAS Group, Inc.RSS