Kotlin “一行”;如果;活动
我有以下代码:Kotlin “一行”;如果;活动,kotlin,Kotlin,我有以下代码: private fun setCashPaymentContainer(isSelected: Boolean) { if (isSelected) { dataBinding.cashPaymentCheckImageViewContainer.visibility = View.VISIBLE } else { dataBinding.cashPaymentCheckImageVie
private fun setCashPaymentContainer(isSelected: Boolean) {
if (isSelected) {
dataBinding.cashPaymentCheckImageViewContainer.visibility = View.VISIBLE
} else {
dataBinding.cashPaymentCheckImageViewContainer.visibility = View.GONE
}
}
它工作得很好,但我想改进它,并将其编写为简化易读的if-else块。如果我能用一行if-else语句,那就太好了。请建议。您可以使用if表达式:
dataBinding.cashPaymentCheckImageViewContainer.visibility = if(isSelected) View.VISIBLE else View.GONE
…但是在这种情况下,更好(信用:):
注意:还有和。事实上,Kotlin允许这样做
private fun setCashPaymentContainer(isSelected: Boolean) {
dataBinding.cashPaymentCheckImageViewContainer.visibility = when {
isSelected -> View.VISIBLE
else -> View.GONE
}
}
实际上,你可以把它做得更好(依我看):
现在你可以做了
private fun setCashPaymentContainer(isSelected: Boolean) {
dataBinding.cashPaymentCheckImageViewContainer.showIf { isSelected }
}
是的,为什么不可能?这能回答你的问题吗?从上下文来看,我假设这是Android。如果您在项目中包括
Android KTX
,那么您可以使用扩展属性:因此您只需执行view.isVisible=isSelected
。
inline fun View.showIf(condition: (View) -> Boolean) {
val shouldShow = condition(this)
this.visibility = when {
shouldShow -> View.VISIBLE
else -> View.GONE
}
}
private fun setCashPaymentContainer(isSelected: Boolean) {
dataBinding.cashPaymentCheckImageViewContainer.showIf { isSelected }
}