ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

第064篇 空安全入门:?、!! 与 ?. 的三分天下

第064篇 空安全入门:?、!! 与 ?. 的三分天下 空安全这题"入门"不难,难的是它后面那一串追问:?.链式调用的返回值类型是什么、?:的右值什么时候求值、?.let里的it是什么类型、!!什么时候能用、Compose 里状态的可空性怎么处理。答得好的人有个共同点——不背语法表,而是把"可空性"当成类型层面的契约来讲。先把结论放在前面:Kotlin 的空安全是编译期能力。T与T?是两个不同类型,不能互相赋值;?.(安全调用)在接收者为 null 时短路返回 null、且不求值后续链;?:(Elvis)在左值为 null 时返回右值;!!是断言非空,失败即抛KotlinNullPointerException;let是作用域函数,在非空情形下把值作为it传入。 核心纪律是:把 null 当成一个需要显式处理的分支,而不是一个可以随手忽略的状态。机制拆解?.的短路语义是这题最值得讲清的一点:a?.b?.c一旦遇到 null 就立即返回 null,整条链后续的表达式都不再求值。这个"短路"不只是避免崩溃,还有实际意义——比如user?.address?.city?.length ?: 0,当
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进