在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
当前回答
另一个有趣的方法是在以下情况使用:
when(a) {
true -> b
false -> c
}
在一些更复杂的场景中非常方便。老实说,这对我来说比……其他的……
其他回答
在Java中,if是语句,但在Kotlin中if是表达式。它被称为表达式,因为它比较a和b的值并返回最大值。因此,在Kotlin中没有三元运算符(a>b)?A:b,因为它被if表达式所取代。
在Kotlin中,if是一个表达式,即它返回一个值。因此 没有三元操作符(条件?然后:else),因为 普通的如果在这个角色中表现得很好。这里的手动源代码
// Traditional usage
var max = a
if (a < b) max = b
// With else
var max: Int
if (a > b) {
max = a
} else {
max = b
}
// As expression
val max = if (a > b) a else b
博士TL;
if (a) b else c
^是你可以用来代替三元运算符表达式a ?b: c,这是Kotlin语法不允许的。
在Kotlin中,许多控制语句,例如if、when,甚至try,都可以用作表达式。因此,这些语句的结果可以赋值给变量,也可以从函数返回,等等。
从语法上讲,不需要三元运算符
由于使用了Kotlin的表达式,该语言实际上并不需要三元运算符。
if (a) b else c
你可以用什么来代替三元运算符表达式a ?B: c。
我认为前一种表达更有可读性,因为每个人都知道如果其他人做了什么,然而?:如果您不熟悉语法,则不太清楚。
然而,我不得不承认,我经常错过更方便的三元运算符。
其他备选方案
when
您还可以看到在检查条件时Kotlin中使用的构造。这也是一种以另一种方式表达if-else级联的方法。下面以OTs为例。
when(a) {
true -> b
false -> c
}
扩展
正如其他答案中的许多好例子(Kotlin三元条件运算符)所示,扩展还可以帮助解决您的用例。
你可以使用var a= if (a) b else c来代替三元运算符。
kotlin的另一个好概念是Elvis运算符。你不需要每次都检查null。
val l = b?.length ?: -1
如果b不为空,则返回length,否则执行右边语句。
在Kotlin中,你可以像这样使用三元运算:"add b" else "add c"