In Kotlin, the when
statement can also be used as an expression that returns a value. This is known as the when
expression. The syntax is similar to the when
statement, but with an added =
sign after the value being matched, and each branch must return a value of the same type.
The general syntax of a when
expression is:
val result = when (value) {
pattern1 -> value1
pattern2 -> value2
// more patterns and values
else -> defaultValue
}
In this syntax, value
is the value to be matched against the patterns. Each pattern is specified using the ->
symbol, and is followed by a value to be returned if the pattern matches. If no patterns match, the else
block returns a default value.
Here’s an example of a when
expression that returns a string:
val x = 5
val message = when (x) {
1 -> "One"
2 -> "Two"
3, 4 -> "Three or Four"
in 5..10 -> "Between Five and Ten"
else -> "Not a valid number"
}
println(message)
In this example, the value of x
is matched against several patterns, and the corresponding string value is returned as the value of the message
variable. The println
statement then prints the value of message
.
Note that the when
expression must always have a default value specified using the else
block, since otherwise it wouldn’t be possible to guarantee that the expression will always return a value.