在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
当前回答
你可以使用var a= if (a) b else c来代替三元运算符。
kotlin的另一个好概念是Elvis运算符。你不需要每次都检查null。
val l = b?.length ?: -1
如果b不为空,则返回length,否则执行右边语句。
其他回答
在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 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
为什么要用这样的东西:
when(a) {
true -> b
false -> b
}
当你实际上可以使用这样的东西(在这种情况下,a是布尔值):
when {
a -> b
else -> b
}
(x:Int,y:Int):字符串= if (x>y)"max = $x" else "max = $y"
内联funcation
Java中等价的三元运算符
a ? b : c
是一个简单的IF在Kotlin一行
if(a) b else c
没有三元操作符(条件?然后:else),因为 普通的如果在这个角色中表现得很好。
https://kotlinlang.org/docs/reference/control-flow.html#if-expression
Null比较的特殊情况
你可以使用Elvis运算符
if ( a != null ) a else b
// equivalent to
a ?: b