如何按条件编写Kotlin
if (a) b else c
使用when
答案 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 }
...但它应该是对可能的证明。 )。