when
可以当作一个表达式来使用,这意味着它可以返回一个值。当 when
作为表达式时,每个分支都必须产生相同类型的值。
val x = 3 val result = when (x) { 1 -> "One" 2 -> "Two" else -> "Other" } println(result) // 输出 "Other"
当作语句使用
when
也可以作为一个简单的语句来使用,不返回任何值。这种情况下,每个分支可以是一个语句块。
val x = 3 when (x) { 1 -> println("One") 2 -> println("Two") else -> println("Other") }
检查多个条件
你可以通过逗号分隔多个条件来检查它们是否满足。
val x = 5 when (x) { 1, 2 -> println("One or Two") 3 -> println("Three") else -> println("Other") }
使用范围和 in 关键字
when
可以与 in
关键字一起使用,来检查变量是否在一个范围内。
val x = 5 when (x) { in 1..10 -> println("In range 1 to 10") !in 1..10 -> println("Not in range 1 to 10") else -> println("Other") }
使用 is 关键字进行类型检测
when
可以用于类型检测,并且可以自动转换为该类型。
-- -------------------- ---- ------- --- ------------- ----- ------ - ---- ----- - -- --- -- --- -------- -- ---- -- -- ----- -- ------ -- -- ------- ---- -- --------- - --------------------- -- -- --- --------
使用任意表达式作为条件
when
不仅可以基于变量的值进行判断,还可以基于任意表达式的值。
val x = 10 val y = 20 when { x > y -> println("x is greater than y") x < y -> println("x is less than y") else -> println("x equals y") }
使用 lambda 表达式
在某些情况下,when
可以接收一个 lambda 表达式作为条件,这使得它可以执行更复杂的逻辑。
-- -------------------- ---- ------- --- - - - ---- --- - -- --- -- ------------- -- --------- -- ------ -- ------------- - -------- ---- -- - ------------- --------- ------ -- ------------ - -
使用多个条件合并
可以使用 else if
或者多个 when
分支来实现多条件合并。
val x = 7 when { x in 1..5 -> println("Between 1 and 5") x in 6..10 -> println("Between 6 and 10") else -> println("Outside the range") }
总结
when
是 Kotlin 中非常强大和灵活的条件控制结构。它可以作为表达式或语句使用,可以检查变量的值、类型、范围,甚至可以执行复杂的逻辑。掌握 when
的用法对于写出简洁而高效的 Kotlin 代码至关重要。