在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
当前回答
记住,与许多流行语言不同,三元运算符和猫王运算符在Kotlin中具有不同的含义。表情干什么?在Kotlin编译器中value1: value2会给你不好的单词,不像任何其他语言,因为在Kotlin中没有三元运算符,就像官方文档中提到的那样。原因是if、when和try-catch语句本身返回值。
那么,做表情?Value1: value2可以替换为
Val Max = if (a > b) print(选择一个) 其他的 打印(“选择b”)
Kotlin拥有的Elvis运算符只适用于可空变量的情况,例如:
如果我执行类似value3 = value1 ?: value2这样的操作,那么如果value1为null,那么将返回value2,否则将返回value1。
从这些回答中可以得到更清晰的理解。
其他回答
在Kotlin中没有三元运算符。乍一看,这似乎有问题。但是我们可以用内联if else语句因为这是表达式。我们要做的就是
var number = if(n>0) "Positive" else "Negetive"
这里我们可以用else if来阻塞我们需要的太多。像- - - - - -
var number = if(n>0) "Positive" else if(n<0) "Negative" else "Zero"
这一行比三元运算符简单易读。当我们在Java中使用多个三元运算符时,这看起来很可怕。但是这里我们有一个清晰的语法。甚至我们也可以把它写成多行。
在Kotlin中,你可以像这样使用三元运算:"add b" else "add c"
您可以在Kotlin中使用if表达式。在Kotlin中if是一个带有结果值的表达式。所以在Kotlin中,我们可以写
fun max(a: Int, b: Int) = if (a > b) a else b
在Java中,我们可以用更大的代码实现同样的效果
int max(int a, int b) {
return a > b ? a : b
}
在Kotlin中,if语句是表达式。所以下面的代码是等价的:
if (a) b else c
表达式和语句之间的区别在这里很重要。在Java/ c# /JavaScript中,if形成语句,意味着它不解析为值。更具体地说,你不能把它赋值给一个变量。
// Valid Kotlin, but invalid Java/C#/JavaScript
var v = if (a) b else c
如果你来自一种If是语句的语言,这可能看起来不自然,但这种感觉很快就会消失。
博士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三元条件运算符)所示,扩展还可以帮助解决您的用例。