6

我正在尝试 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

这是什么意思?

4

2 回答 2

10

编译器知道如果条件满足mTripStatus则不可能,因此它执行从to的智能转换。这就是允许编译的原因。nullifString?Stringhtml.replace("TRIP_STATUS_VALUE", mTripStatus)

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

于 2017-12-04T19:51:10.977 回答
2

这段代码:

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) }
于 2018-10-25T19:45:43.677 回答