为什么三元运算符在Kotlin中不“工作”?

我有以下的声明:

val visibility = if (itemView.img_playstore.visibility == View.VISIBLE) View.GONE else View.VISIBLE 

另一个:

 val visibility : Int = itemView.img_playstore.visibility == View.VISIBLE ? View.GONE : View.VISIBLE 

第一个是好的,但对于第二个,我收到以下消息: 类型不匹配。 要求的Int。 找到布尔值。

这是什么原因?

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

 val cond: Boolean = true val visibility: Int = if(cond) 2 else 3 

when可以使用:

 val cond: Boolean = true val visibility: Int = when { cond -> 2 else -> 3 } 

或者像这样:

 val visibility: Int = when (cond) { true -> 2 false -> 3 } 

很多方面,但没有三元操作符…