猫王运算符

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字节码生成器,所以对于?:的名称还是有可信度的,以后交流技术时就叫他猫王运算符吧,虽然来源说法有点扯,但总算有个解释了。

你可能感兴趣的:(Kotlin,Kotlin,Elvis,猫王,Elvis运算符,猫王运算符)