为什么三元运算符在Kotlin中没有"工作"?

Dra*_*ško 0 kotlin

我有以下声明:

val visibility = if (itemView.img_playstore.visibility == View.VISIBLE)  View.GONE else View.VISIBLE
Run Code Online (Sandbox Code Playgroud)

而另一个:

val visibility : Int = itemView.img_playstore.visibility == View.VISIBLE ?  View.GONE : View.VISIBLE
Run Code Online (Sandbox Code Playgroud)

第一个是好的,但对于第二个,我收到以下消息:类型不匹配.必需的国际 找到布尔值.

这是什么原因?

s1m*_*nw1 9

答案很简单:Kotlin 没有三元运算符.你if/else从第一个片段开始可能是最好的选择,因为它是Kotlin中的一个表达式(除了Java之外).

val cond: Boolean = true
val visibility: Int = if (cond) 2 else 3
Run Code Online (Sandbox Code Playgroud)

when可以使用:

val cond: Boolean = ...
val visibility: Int = when {
    cond -> 2
    else -> 3
}
Run Code Online (Sandbox Code Playgroud)

或者像这样:

val visibility: Int = when (cond) {
    true -> 2
    false -> 3
}
Run Code Online (Sandbox Code Playgroud)

有很多方法,但没有三元运算符......