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

时间:2017-09-07 17:11:50

标签: android kotlin kotlin-android-extensions

如果变量在Kotlin中可以为空,我们需要做一个安全呼叫?。或!!。明确调用。

当我尝试使用来自可变量变量的某些扩展(例如run或let)时,我注意到.run很好并且IDE没有抱怨它,通常我会收到警告提醒我它不是安全的呼叫。

在kotlin中,?。run {}和.run {}会有什么不同吗?如果我使用.run {},它被视为无效安全吗?

var a? = "..."

a?.run{}

a.run{}

1 个答案:

答案 0 :(得分:1)

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

访问a时:

a?.run { } 

或访问this上的run内的a

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?