智能转换为 kotlin.String

Smart cast to kotlin.String

我正在尝试使用 Kotlin 并收到来自编译器的消息:

Smart cast to kotlin.String

代码:

/*"mTripStatus" is a nullable String*/
var html :String = HTML
html = if (mTripStatus!=null) html.replace("TRIP_STATUS_VALUE", mTripStatus) else html

这是什么意思?

编译器知道mTripStatus如果满足if条件就不能null,所以它执行了一个smart castString?String。这就是允许 html.replace("TRIP_STATUS_VALUE", mTripStatus) 编译的原因。

但请注意,这不应被解释为编译器警告。这是惯用的 Kotlin 代码。

此代码:

var html :String = HTML
html = if (mTripStatus!=null) html.replace("TRIP_STATUS_VALUE", mTripStatus) else html

可以是:

var html: String = html
mTripStatus?.let { html = html.replace("TRIP_STATUS_VALUE", mTripStatus) }