跳至內容

埃爾維斯運算符

維基百科,自由的百科全書

編程語言中,埃爾維斯運算符是一種二元運算符,常寫為?:or||,如果第一操作數求值為真則返回其值,否則返回第二操作數的值。類似於帶有「最後值」語義的短路求值。埃爾維斯運算符是受三元條件運算符 ? :啟發而被提出的。因為埃爾維斯運算符表達式A ?: B近似於三元條件運算符A ? A : B

埃爾維斯運算符得名於它的通常表示法?:,相似於埃爾維斯·普雷斯利(即「貓王」)的顏文字側臉的額發英語quiff,或者其他角度看相遇於他的得意的笑臉。[1]

有一個相似的運算符是空值結合運算符,把布爾真值檢查改為是否為空指針null。常寫為??,如C#[2]

編程語言支持

類似的短路運算符OR

Common Lisp, Clojure, Lua, Object Pascal, Perl, Python, Ruby, JavaScript等編程語言中, OR運算符(典型為||or)都是短路行為:如果左操作數的值為真,則表達式結果為真,不再對右操作數求值。這被稱作短路求值

C/C++語言標準強制||&&短路求值運算符。

參見

參考文獻

  1. ^ Joyce Farrell. Java Programming. 7 February 2013: 276. ISBN 978-1285081953. The new operator is called Elvis operator because it uses a question mark and a colon together (?:); if you view it sideways, it reminds you of Elvis Presley. 
  2. ^ ?? Operator. C# Reference. Microsoft. [5 December 2018]. (原始內容存檔於2022-02-07). 
  3. ^ Using the GNU Compiler Collection (GCC): Conditionals. gcc.gnu.org. [2022-03-05]. (原始內容存檔於2022-01-12). 
  4. ^ Using and Porting the GNU Compiler Collection (GCC): C Extensions. gcc.gnu.org. [2022-03-05]. (原始內容存檔於2021-07-14). 
  5. ^ Elvis Operator (?: ). [2022-03-05]. (原始內容存檔於2021-08-16). 
  6. ^ The Apache Groovy programming language - Groovy 1.5 release notes. groovy-lang.org. [2022-03-05]. (原始內容存檔於2022-02-11). 
  7. ^ PHP: Comparison Operators - Manual. PHP website. [2014-02-17]. (原始內容存檔於2022-02-28). 
  8. ^ Null Safety - Kotlin Programming Language. Kotlin. [2022-03-05]. (原始內容存檔於2022-02-13). 
  9. ^ Albahari, Joseph; Albahari, Ben. C# 6.0 in a Nutshell 6. O'Reilly Media. 2015: 59. ISBN 978-1491927069. 
  10. ^ Efftinge, Sven. Xtend - Expressions. eclipse.org. [2022-03-05]. (原始內容存檔於2021-05-06). 
  11. ^ Closure Templates - Expressions. GitHub. 29 October 2021 [2022-03-05]. (原始內容存檔於2022-03-05). 
  12. ^ The Swift Programming Language (Swift 4.1): Basic Operators. developer.apple.com. [2022-03-05]. (原始內容存檔於2017-11-12). 
  13. ^ Elvis Operator - Ballerina Programming Language. Ballerina. [2018-12-19]. (原始內容存檔於2018-12-20). 
  14. ^ clojure.core or macro API reference. [2022-03-05]. (原始內容存檔於2022-02-25). 
  15. ^ Nullish coalescing operator (??). mozilla. [2021-01-28]. (原始內容存檔於2022-02-28) (英語). 
  16. ^ nullish coalescing commit by Kingwl · Pull Request #32883 · microsoft/TypeScript. GitHub. [2019-10-08]. (原始內容存檔於2020-11-12) (英語). 
  17. ^ Lua or operator Reference. [2022-03-05]. (原始內容存檔於2022-01-30).