news 2026/10/5 2:29:55

第065篇 Elvis 运算符与 let:空值处理的组合拳

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
第065篇 Elvis 运算符与 let:空值处理的组合拳

?:与let是 Kotlin 里被低估的两个语法。它们的共同点是——读起来简单,但背后藏着一个可以改变代码组织方式的抽象:把"非空才执行"和"为空则兜底"这两件事,从散落在方法体里的控制流,变成可以组合的表达式。这题答好,要能讲清它们各自的求值时机、几类作用域函数的差异,以及什么时候不该用。

先把结论放在前面:?:(Elvis 运算符)在左值为 null 时返回右值,右值是懒求值的;let是作用域函数,在接收者非空时把值作为参数(默认it,也可具名)传入并返回 lambda 结果。两者常配合使用:x?.let { ... } ?: default,完成"有值则处理、无值则兜底"的完整语义。 核心纪律是:Elvis 是表达式,适合做兜底与提前返回;let是作用域工具,适合在非空范围内消除重复判空。

机制拆解

先说 Elvis。它之所以能替代if (x == null) x = d,关键在于它是表达式而非语句:整个a ?: b有类型、有值,可以赋值、可以作为参数传递、可以作为 return 值。求值时机是它最容易被问也最有价值的一点——右值只在左值为 null 时才求值。 所以x ?: throw IllegalStateException()里的抛异常只会在缺失时触发;x ?:

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/5 2:29:54

成人学历能不能考公考编,专业对口怎么算

我自己就是拿着成人本科去琢磨过考公这条路的人,当年一直担心的就是“人家认不认我这证”。后来把政策摸了一圈,发现没想象中那么窄,但也有坑。这篇给同样想法的人垫个底。 成人学历国家承认,多数岗位能报 只要你的学历在学信网可…

作者头像 李华
网站建设 2026/10/5 2:29:51

自考统考科目怎么搭配报考,一年到底能考几次

我刚开始自考那阵,容易踩的坑就是以为“报得越多越好”,结果第一次一口气报了四门,精力根本铺不开,只过一门。后来才摸清,统考科目的报考节奏和搭配,比盲目囤课重要得多。这篇把报考次数、科目组合和几个容…

作者头像 李华
网站建设 2026/10/5 2:29:02

Jetbrains 正式官宣:全新AI IDE正式发布!

前几天无聊刷新闻,无意间看见JetBrains 又官宣了一个新的AI IDE 叫做 Air。 jetbrains其实很早之前就有了一个AI Asssistent的功能也是支持Ai Coding的为什么这次又要发一个全新的AI IDE呢? 现在很多公司都爱卷AI IDE,harness之类的工具&…

作者头像 李华
网站建设 2026/10/5 2:28:56

排序算法:快慢与稳不稳,你总得选一个

引言在前面的博客中,我们学习了栈、队列等基础数据结构,它们解决的是“如何组织数据”的问题。而今天要聊的排序算法,解决的是“如何让数据有序”的问题。排序看似简单,却暗藏着一场效率与稳定的博弈:有的算法跑得快但…

作者头像 李华
网站建设 2026/10/5 2:28:31

(142页PPT)PLM+ERP系统选型及建设方案建议书(附下载方式)

篇幅所限,本文只提供部分资料内容,完整资料请看下面链接 https://download.csdn.net/download/2501_92796370/92933136 资料解读:《(142页PPT)PLMERP系统选型及建设方案建议书》 详细资料请看本解读文章的最后内容。…

作者头像 李华