如果变量在Kotlin中可以为空,我们需要做一个安全呼叫?。或!!。明确调用。
当我尝试使用来自可变量变量的某些扩展(例如run或let)时,我注意到.run很好并且IDE没有抱怨它,通常我会收到警告提醒我它不是安全的呼叫。
在kotlin中,?。run {}和.run {}会有什么不同吗?如果我使用.run {},它被视为无效安全吗?
var a? = "..."
a?.run{}
a.run{}
答案 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?