我正在尝试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
这是什么意思?
答案 0 :(得分:7)
如果满足mTripStatus
条件,编译器知道null
不能是if
,因此它从String?
到{{1}执行smart cast }。这是允许String
编译的原因。
但请注意,这不应被解释为编译器警告。这是惯用的Kotlin代码。
答案 1 :(得分:0)
此代码:
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) }