在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
当前回答
您可以在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是一个表达式,即它返回一个值。因此, 没有三元运算符(条件?然后:else), 因为普通的if在这个角色中很管用。
您可以在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是语句的语言,这可能看起来不自然,但这种感觉很快就会消失。
在Kotlin中没有三元运算符,最封闭的是下面两种情况,
If else作为表达式语句
val a = true if(a) print(" a是真")else print(" a是假")
猫王运营商
如果?:左边的表达式不为空,则猫王操作符 返回它,否则返回右边的表达式。请注意 右边的表达式只在左边的表达式被求值 Side为空。
val name = node.getName() ?: throw IllegalArgumentException("name expected")
参考文档
在kotlin中没有三元运算符,因为if else块返回值。
所以,你可以: Val Max = if (a > b) a else b 而不是java的Max = (a > b) ?B: c
我们也可以使用when construction,它也返回值:
val max = when(a > b) {
true -> a
false -> b
}
下面是kotlin文档的链接:Control Flow: if, when, for, while