猫王运算符

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

后续(2021年01月12日):在《Kotlin编程权威指南》中也找到了一样的说辞,这本书是美国的一个非常出名的培训机构“Big Nerd Ranch”出版的,书中说因为?:很像Elivs的标志性发型,所以叫Elivs运算符。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

android_cai_niao

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值