a.run 是否与 kotlin 中的 a?.运行 相同

Does a.run same as a?.run in kotlin

如果变量在 Kotlin 中可以为空,我们需要执行安全调用 ?. 或 !!。用于显式调用。

当我尝试使用可空变量的一些扩展(例如 运行 或 let)时,我注意到 .运行 很好并且 IDE 没有抱怨它,通常我会收到警告提醒我这不是安全电话。

kotlin 中的 ?.运行{} 和 .运行{} 有什么区别吗?如果我使用 .运行{} 是否被视为空安全?

var a? = "..."

a?.run{}

a.run{}

您需要在某处安全地处理 null。

访问a时:

a?.run { } 

或者在 a 上访问 run 内的 this 时:

a.run { this?.toSomething() }

String? 为例,它们都打印 null 并且编译器可以同时打印:

val x: String? = null
println(x.run { this?.toUpperCase() }) // prints null, type is String?
println(x?.run { this.toUpperCase() }) // prints null, type is String?