如果对象为空,如何运行代码?

在Kotlin中,如果一个对象不为null,我可以运行代码:

data?.let { ... // execute this block if not null } 

但如果对象为空,我怎么能执行一个代码块?

只要使用正常的if

 if (data == null) { // Do something } 

您可以使用elvis运算符并使用run { ... }评估另一个代码块:

 data?.let { // execute this block if not null } ?: run { // execute this block if null } 

但是这似乎不像一个简单的ifelse语句if可读。

另外,您可能会发现这个问答有用:

  • 在Kotlin中,处理可空值的惯用方式是什么,引用或转换它们

您可以创建一个扩展函数:

 fun Any?.ifNull(block: () -> Unit) { if (this == null) block() } 

那么你可以这样做:

 data.ifNull { // Do something }