在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
在Kotlin中,与这个表达式等价的是什么?
a ? b : c
这在Kotlin中是无效的代码。
当前回答
您可以在Kotlin中以多种方式实现它
如果使用 如果(a) b else c 使用时 当(a) { True ->打印("value b") 错误->打印("value c") Else -> { 打印("在任何其他情况下默认返回") } } 空安全 Val a = b ?: c
其他回答
在Kotlin中没有三元运算符,最封闭的是下面两种情况,
If else作为表达式语句
val a = true if(a) print(" a是真")else print(" a是假")
猫王运营商
如果?:左边的表达式不为空,则猫王操作符 返回它,否则返回右边的表达式。请注意 右边的表达式只在左边的表达式被求值 Side为空。
val name = node.getName() ?: throw IllegalArgumentException("name expected")
参考文档
如果你不知道如何使用标准符号,你也可以使用类似这样的中缀来创建/模拟它:
创建一个类来保存目标和结果:
data class Ternary<T>(val target: T, val result: Boolean)
创建一些中缀函数来模拟三元操作
infix fun <T> Boolean.then(target: T): Ternary<T> {
return Ternary(target, this)
}
infix fun <T> Ternary<T>.or(target: T): T {
return if (this.result) this.target else target
}
然后你就可以这样使用它了:
val collection: List<Int> = mutableListOf(1, 2, 3, 4)
var exampleOne = collection.isEmpty() then "yes" or "no"
var exampleTwo = (collection.isNotEmpty() && collection.contains(2)) then "yes" or "no"
var exampleThree = collection.contains(1) then "yes" or "no"
在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
}
在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中使用多个三元运算符时,这看起来很可怕。但是这里我们有一个清晰的语法。甚至我们也可以把它写成多行。