我有以下声明:
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
第一个是好的,但对于第二个,我收到以下消息:类型不匹配。必需的国际找到布尔。
这是什么原因?
答案 0 :(得分:9)
答案很简单:Kotlin中没有没有三元运算符。第一个代码段中的if/else
可能是最好的选择,因为它是Kotlin中的表达式(除了Java之外)。
val cond: Boolean = true
val visibility: Int = if (cond) 2 else 3
也可以使用when
:
val cond: Boolean = ...
val visibility: Int = when {
cond -> 2
else -> 3
}
或者像这样:
val visibility: Int = when (cond) {
true -> 2
false -> 3
}
很多方面,但没有三元运营商...
答案 1 :(得分:3)
如@s1m0nw1所述,没有三元运算符。我用扩展函数和Boolean
找到的一个好方法是:
infix fun <T> Boolean.then(param: T): T? = if (this) param else null
您可以使用此扩展功能,如下所示:
setBackgroundColor(isHighPriority() then RED ?: WHITE)