为什么三元运算符在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 }
很多方面,但没有三元操作符…
- AspectJ类型层次结构中的kotlin委托编译器问题
- 在未知(Any)对象上调用kclass.memberProperties是否安全?
- 为什么不能在Kotlin类型参数有其他界限,如果它是由另一个类型的参数?
- 错误':android:transformKotlinClassesWithJillForDebug'。 构建用Kotlin + LibGDX编写的Android应用程序时
- 覆盖一些控制器的@JsonIgnore注释。 杰克逊。 弹簧
- 什么是合法的方式来通过反射获得纯Kotlin财产的注释,他们总是失踪?
- 在Kotlin的Unit函数中累积的功能方法?
- 运行单元测试没有发现变化
- Kotlin i.inc()比i ++慢10倍?