编辑这个页面须要登录或更高权限!
在本文中,您将通过各种示例了解在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.