kotlin when
时间: 2023-07-26 20:24:07 浏览: 189
Kotlin中的when语句类似于Java中的switch语句,但提供了更多的功能和灵活性。when语句可以用于任何数据类型,包括枚举和任何类的实例。下面是一个简单的Kotlin when语句示例:
```
when (x) {
1 -> println("x is 1")
2 -> println("x is 2")
3, 4 -> println("x is 3 or 4")
in 5..10 -> println("x is between 5 and 10")
else -> println("x is not in the range")
}
```
在这个例子中,我们对变量x进行了匹配,然后根据不同的情况进行了不同的操作。如果x等于1,我们打印“x is 1”,如果x等于2,我们打印“x is 2”,以此类推。当然,我们也可以使用范围、多个值和其他表达式来匹配x的值。最后,如果没有匹配到任何情况,我们打印“x is not in the range”。
相关问题
kotlin when 用法
Kotlin中的when表达式是一种强大的条件控制结构,类似于其他编程语言中的switch语句。它可以根据不同的条件执行不同的代码块。下面是Kotlin中when表达式的用法:
1. 基本用法:
当需要根据一个变量的值来执行不同的代码块时,可以使用when表达式。例如:
```kotlin
val x = 5
when (x) {
1 -> println("x is 1")
2 -> println("x is 2")
else -> println("x is neither 1 nor 2")
}
```
当x的值为1时,输出"x is 1";当x的值为2时,输出"x is 2";否则输出"x is neither 1 nor 2"。
2. 多个条件匹配:
可以在一个when表达式中匹配多个条件。例如:
```kotlin
val y = 3
when (y) {
1, 2 -> println("y is either 1 or 2")
in 3..5 -> println("y is between 3 and 5")
else -> println("y is neither 1 nor 2, nor between 3 and 5")
}
```
当y的值为1或2时,输出"y is either 1 or 2";当y的值在3到5之间时,输出"y is between 3 and 5";否则输出"y is neither 1 nor 2, nor between 3 and 5"。
3. 使用表达式作为条件:
当需要根据表达式的结果来执行不同的代码块时,可以将表达式作为when的条件。例如:
```kotlin
val z = 7
when {
z < 0 -> println("z is negative")
z > 0 -> println("z is positive")
else -> println("z is zero")
}
```
当z小于0时,输出"z is negative";当z大于0时,输出"z is positive";否则输出"z is zero"。
以上是Kotlin中when表达式的基本用法和常见用法。如果还有其他问题,请继续提问。
kotlin的when
### Kotlin `when` 表达式详解
#### 作为条件表达式的 `when`
在 Kotlin 中,`when` 是一种强大的控制流结构,能够替代传统的 switch-case 结构。它不仅可以用作语句还可以用作表达式来返回值。
```kotlin
val dayOfWeek = 2
val result = when (dayOfWeek) {
1 -> "星期一"
2 -> "星期二"
3 -> "星期三"
else -> "其他时间"
}
println(result)
```
此段代码展示了如何利用 `when` 返回不同情况下的字符串[^1]。
#### 处理多种匹配模式
除了简单的相等比较外,`when` 支持更复杂的匹配逻辑:
- **范围检查**
```kotlin
fun checkNumber(num: Int): String =
when (num) {
in 0..9 -> "是个个位数"
in 10..99 -> "是两位数"
else -> "超过两位数了"
}
```
这段程序通过指定数值所在的区间来进行分类[^2]。
- **类型检测**
对于多态场景下对象类型的判断也十分方便:
```kotlin
fun describe(obj: Any): String =
when (obj) {
is Int -> "$obj 是整型"
is String -> obj.reversed()
else -> "未知类型"
}
```
这里演示了怎样依据传入参数的具体类别执行不同的操作[^5]。
#### 执行复杂业务逻辑
当需要根据输入执行一系列较为复杂的处理流程时,可以在分支内定义完整的代码块:
```kotlin
var message = ""
val actionCode = 3
message = when(actionCode){
1 ->{
val temp="启动服务..."
println(temp)
temp
}
2->"暂停当前任务"
else->"未识别的操作码"
}
print(message)
```
上述例子说明了如果某个条件下要完成较多的任务,则可以直接书写大括号包裹起来的一组指令[^3]。
阅读全文