您当前的位置:首页 > 计算机 > 编程开发 > Kotlin

猫王运算符

时间:02-05来源:作者:点击数:

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编程权威指南》中也找到了一样的说辞,这本书是美国的一个非常出名的培训机构“Big Nerd Ranch”出版的,书中说因为?:很像Elivs的标志性发型,所以叫Elivs运算符。

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门