貓王運算子
Java中的三目運算子:
boolean isOpen = true
String desc = isOpen ? "開" : "關"
Kotlin中沒有與之對應的三目運算子,有一個很像但功能不同Elvis(貓王)運算子:?:,示例如下:
var address: Address? = null
val city = address?.city ?: "未知"
?:也可用來在表示式為null時直接返回,如下:
fun foo(bar: Bar?) {
bar ?: return
...
}
?:稱為貓王運算子,功能為:如果表示式的值不是null,則返回表示式的值,否則返回後面的值。
Elvis這個單詞在有道詞典中翻譯就只有一個貓王的意思,很是詭異,為什麼要叫貓王啊?在《Kotlin實戰》的書上找到了答案,書中是這麼描述的,把?:順時間旋轉90度,它看起來就像貓王一樣,如下圖:
,如果你喜歡聽更嚴肅的名稱,可以把?:叫作null合併運算子。
Elvis(貓王)是美國一個很出名的搖滾歌手/演員。說像貓王,這感覺有點扯,但《Kotlin實戰》的作者還是有一定說服力的,作者之一在2003年起就在JetBrains公司工作,他是Kotlin最早的貢獻者之一,建立了最初版本的Kotlin JVM位元組碼生成器,所以對於?:的名稱還是有可信度的,以後交流技術時就叫他貓王運算子吧,雖然來源說法有點扯,但總算有個解釋了。
相關文章
- 運算子 運算子
- php運算子 比較運算子 邏輯運算子 三元運算子PHP
- 運算子-賦值運算子賦值
- MySQL的四種運算子(算術運算子、比較運算子、邏輯運算子和位運算子)MySql
- 8.Golang中的運算子-算術運算子、關係運算子、邏輯運算子、賦值運算子Golang賦值
- 運算子的關係,什麼叫一元運算子,二元運算子,三元運算子,運算子優先順序,以及運算子的
- 運算子
- 算術運算子裡的特殊運算子
- javascript中&&運算子和||運算子的使用JavaScript
- Python 運算子優先順序 運算子Python
- Python學習-算術運算子,賦值運算子和複合運算子Python賦值
- java零基礎自學第一天②,運算子:表示式,算術運算子,+操作,賦值運算子,自增自減運算子,關係運算子,邏輯運算子,三元運算子Java賦值
- php運算子運用之型別運算子該如何使用PHP型別
- C++ 迭代器運算子 箭頭運算子->C++
- 位運算子
- SHELL運算子
- mysql運算子MySql
- 身份運算子
- JavaScript運算子JavaScript
- oracle運算子Oracle
- JavaScript -= 運算子JavaScript
- JavaScript += 運算子JavaScript
- JavaScript *= 運算子JavaScript
- JavaScript %= 運算子JavaScript
- JavaScript |= 運算子JavaScript
- JavaScript <<= 運算子JavaScript
- JavaScript >>>= 運算子JavaScript
- JavaScript >>= 運算子JavaScript
- JavaScript &= 運算子JavaScript
- JavaScript ^= 運算子JavaScript
- JavaScript /= 運算子JavaScript
- Python運算子Python
- Java 運算子Java
- Java運算子Java
- js運算子JS
- JavaScript in 運算子JavaScript
- Java基礎09:邏輯運算子、位運算子Java
- 位運算子之---按位取反運算子(簡單易懂)