在本文中,您將通過各種示例了解在Kotlin中 when 表達式。
Kotlin中的when表達式可以認為是Java switch 語句的代替。它評估許多代替方案中的一段代碼。
fun main(args: Array<String>) {
val a = 12
val b = 5
println("輸入運算符 +, -, * 或 /")
val operator = readLine()
val result = when (operator) {
"+" -> a + b
"-" -> a - b
"*" -> a * b
"/" -> a / b
else -> "$operator 運算符是無效的運算符。"
}
println("result = $result")
}當您運行程序時,輸出將如下所示:
輸入運算符 +, -, * 或 / * result = 60
上面的程序從用戶那里獲取輸入字符串(推薦閱讀:在Kotlin中從用戶那里獲取字符串輸入)。假設用戶輸入*。在這種情況下,將對表達式 a * b 求值,并將值分配給變量result。
如果沒有的滿足分支條件(用戶輸入除了+,-,*,或/外,其他任何選項,),else分支將被評估。
在上面的示例中,我們使用when作為表達式。 但是,when作為表達式使用時不是強制性的。 例如,
fun main(args: Array<String>) {
val a = 12
val b = 5
println("輸入運算符 +, -, * 或 /")
val operator = readLine()
when (operator) {
"+" -> println("$a + $b = ${a + b}")
"-" -> println("$a - $b = ${a - b}")
"*" -> println("$a * $b = ${a * b}")
"/" -> println("$a / $b = ${a / b}")
else -> println("$operator is invalid")
}
}當您運行程序時,輸出將如下所示:
輸入運算符 +, -, * 或 / - 12 - 5 = 7
這里, when 不是表達式(沒有將 when 的返回值賦給任何對象)。 在這種情況下,else 分支不是必需的。
fun main(args: Array<String>) {
val n = -1
when (n) {
1, 2, 3 -> println("n 是正整數小于 4.")
0 -> println("n 為0 ")
-1, -2 -> println("n 是負整數大于 -3.")
}
}運行該程序時,輸出為:
n 是負整數大于 -3.
fun main(args: Array<String>) {
val a = 100
when (a) {
in 1..10 -> println("A 是小于11的正數。")
in 10..100 -> println("介于10和100(包括10和100)之間的正數")
}
}運行該程序時,輸出為:
介于10和100(包括10和100)之間的正數
要在運行時檢查值是否為特定類型,可以使用 is 和!is 運算符。例如,
when (x) {
is Int -> print(x + 1)
is String -> print(x.length + 1)
is IntArray -> print(x.sum())
}fun main(args: Array<String>) {
val a = 11
val n = "11"
when (n) {
"cat" -> println("Cat? Really?")
12.toString() -> println("Close but not close enough.")
a.toString() -> println("Bingo! It's eleven.")
}
}運行該程序時,輸出為:
Bingo! It's eleven.