如何在Kotlin中实现以下Java switch
语句代码的等效项?
switch (5) {
case 1:
// Do code
break;
case 2:
// Do code
break;
case 3:
// Do code
break;
}
您可以这样:
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
当Expression when替换类C语言的switch运算符时。以最简单的形式看起来像这样
when (x) {
1 -> print("x == 1")
2 -> print("x == 2")
else -> { // Note the block
print("x is neither 1 nor 2")
}
}
当顺序将其参数与所有分支匹配时,直到一些满足分支条件。什么时候可以用作表达或陈述。如果将其用作表达式,则满意分支的价值变成整体的价值表达。如果将其用作语句,则各个值分支将被忽略。 (就像是否,每个分支可以是一个块,并且它的值是该块中最后一个表达式的值。)
在Java中,[switch
在Kotlin中实际上是when
。但是,语法不同。
when(field){
condition -> println("Single call");
conditionalCall(field) -> {
print("Blocks");
println(" take multiple lines");
}
else -> {
println("default");
}
}
这是不同用途的示例:
// This is used in the example; this could obviously be any enum.
enum class SomeEnum{
A, B, C
}
fun something(x: String, y: Int, z: SomeEnum) : Int{
when(x){
"something" -> {
println("You get the idea")
}
else -> {
println("`else` in Kotlin`when` blocks are `default` in Java `switch` blocks")
}
}
when(y){
1 -> println("This works with pretty much anything too")
2 -> println("When blocks don't technically need the variable either.")
}
when {
x.equals("something", true) -> println("These can also be used as shorter if-statements")
x.equals("else", true) -> println("These call `equals` by default")
}
println("And, like with other blocks, you can add `return` in front to make it return values when conditions are met. ")
return when(z){
SomeEnum.A -> 0
SomeEnum.B -> 1
SomeEnum.C -> 2
}
}
其中大多数都编译为switch
,但when { ... }
除外,后者编译为一系列if语句。
但是对于大多数用途,如果使用when(field)
,它将编译为switch(field)
。
但是,我确实要指出,带有一堆分支的switch(5)
只是浪费时间。 5始终为5。如果您使用switch
,if语句或其他任何逻辑运算符,则应使用变量。我不确定代码只是一个随机示例还是实际代码。我要指出的是后者。
开关盒在kotlin中非常灵活。>
when(x){
2 -> println("This is 2")
3,4,5,6,7,8 -> println("When x is any number from 3,4,5,6,7,8")
in 9..15 -> println("When x is something from 9 to 15")
//if you want to perform some action
in 20..25 -> {
val action = "Perform some action"
println(action)
}
else -> println("When x does not belong to any of the above case")
}
只需使用when
这里是一个示例,可用于对任意对象使用“何时”,