一行“if”操作
Posted
技术标签:
【中文标题】一行“if”操作【英文标题】:One line "if" operation 【发布时间】:2020-02-26 23:37:53 【问题描述】:我有以下代码:
private fun setCashPaymentContainer(isSelected: Boolean)
if (isSelected)
dataBinding.cashPaymentCheckImageViewContainer.visibility = View.VISIBLE
else
dataBinding.cashPaymentCheckImageViewContainer.visibility = View.GONE
它工作正常,但我想改进它并将它写成简化和可读 if else 块。如果我能写一个 if else 语句会很好请建议。
【问题讨论】:
是的,为什么这不可能? 这能回答你的问题吗? Kotlin Ternary Conditional Operator 从上下文我认为这是android。如果您在项目中包含Android KTX
,则可以使用扩展属性:View.isVisible
,因此您只需执行view.isVisible = isSelected
。
【参考方案1】:
您可以使用 if 表达式:
dataBinding.cashPaymentCheckImageViewContainer.visibility = if(isSelected) View.VISIBLE else View.GONE
...但是在这种情况下,isVisible
更好(信用:Pawel):
dataBinding.cashPaymentCheckImageViewContainer.isVisible = isSelected
注意:还有isInvisible
和isGone
。
【讨论】:
【参考方案2】:确实,Kotlin 允许这样做。
private fun setCashPaymentContainer(isSelected: Boolean)
dataBinding.cashPaymentCheckImageViewContainer.visibility = when
isSelected -> View.VISIBLE
else -> View.GONE
你实际上可以让它变得更好(imo):
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
【讨论】:
以上是关于一行“if”操作的主要内容,如果未能解决你的问题,请参考以下文章