kotlin - 三元运算符使用when
问题描述
如何编写 Kotlin 条件
if (a) b else c
使用when
解决方案
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 }
在这里使用......但它应该是一个可能的演示)。
推荐阅读
- python - webscraping python没有显示所有标签
- angular - 错误 TS2345:类型参数 '{ 读取:typeof ElementRef; }' 不能分配给 '{ read?: any; 类型的参数。静态:布尔值;}'
- c++ - 传递参数 SIGNAL/SLOTS
- c - 不同的语句导致类型转换不同。c/gcc
- python - 当 python 闭包完全在进行捕获时?
- vba - VBA:有没有办法等待多个 QueryTable 刷新?
- javascript - 如何确定在文档加载时选择了哪个收音机?
- typescript - 为什么不扩大文字类型和 {} 的联合?
- java - 使用 Scala 使用 Spring 下载文件
- javascript - 如何在特定范围内约束场景视图?ArcGIS JS API