首页 > 解决方案 > 三元运算符使用when

问题描述

如何编写 Kotlin 条件

if (a) b else c

使用when

标签: kotlin

解决方案


when (a) {
  true -> b
  else -> c // or false -> c
}

如您所见:if/else在这种特殊情况下更容易掌握。

如果a不仅仅是一个布尔值,when可能更有意义,例如:

when (a) {
  is Scalable -> TODO("scale it")
  else -> TODO("whatever makes sense")
}

然后可以轻松添加新条件或其他条件......但是这对于简单的布尔评估没有多大意义。

当您添加了关于可读性的评论并且您的示例仅显示了一个作业时,也许以下内容对您来说更具可读性?

val c = if (x) "a"
        else "b"

或者如果你想模拟类似于三元运算符的东西:

val c = x.takeIf { it }?.let { "a" }
        ?: "b"

但是,我希望您明白这一点……如果您只是boolean使用if/ else。但是,如果您的情况更复杂,那么类似的东西也takeIf可能会有所帮助......(我真的很抱歉我x.takeIf { it }在这里使用......但它应该是一个可能的演示)。


推荐阅读