三元运算符使用何时

时间:2018-09-27 08:56:12

标签: kotlin

如何按条件编写Kotlin

if (a) b else c

使用when

1 个答案:

答案 0 :(得分:2)

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 } ...但它应该是对可能的证明。 )。