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?
如果变量在 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?