Kotlin when 表达式
在本文中,您将通过各种示例了解在Kotlin中 when 表达式。
什么是Kotlin when 表达式
Kotlin中的when表达式可以认为是Java switch 语句的代替。它评估许多代替方案中的一段代码。
示例:简单的when表达式
funmain(args:Array<String>){vala=12valb=5println("输入运算符+,-,*或/")valoperator=readLine()valresult=when(operator){"+"->a+b"-"->a-b"*"->a*b"/"->a/belse->"$operator运算符是无效的运算符。"}println("result=$result")}
当您运行程序时,输出将如下所示:
输入运算符+,-,*或/*result=60
上面的程序从用户那里获取输入字符串(推荐阅读:在Kotlin中从用户那里获取字符串输入)。假设用户输入*。在这种情况下,将对表达式 a * b 求值,并将值分配给变量result。
如果没有的满足分支条件(用户输入除了+,-,*,或/外,其他任何选项,),else分支将被评估。
在上面的示例中,我们使用when作为表达式。 但是,when作为表达式使用时不是强制性的。 例如,
funmain(args:Array<String>){vala=12valb=5println("输入运算符+,-,*或/")valoperator=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("$operatorisinvalid")}}
当您运行程序时,输出将如下所示:
输入运算符+,-,*或/-12-5=7
这里, when 不是表达式(没有将 when 的返回值赋给任何对象)。 在这种情况下,else 分支不是必需的。
几种可能使用到的场景
1、用逗号组合两个或多个分支条件。例如,
funmain(args:Array<String>){valn=-1when(n){1,2,3->println("n是正整数小于4.")0->println("n为0")-1,-2->println("n是负整数大于-3.")}}
运行该程序时,输出为:
n是负整数大于-3.
2、检查范围内的值。例如,
funmain(args:Array<String>){vala=100when(a){in1..10->println("A是小于11的正数。")in10..100->println("介于10和100(包括10和100)之间的正数")}}
运行该程序时,输出为:
介于10和100(包括10和100)之间的正数
3、检查值是否为特定类型。
要在运行时检查值是否为特定类型,可以使用 is 和!is 运算符。例如,
when(x){isInt->print(x+1)isString->print(x.length+1)isIntArray->print(x.sum())}
4、使用表达式作为分支条件。例如,
funmain(args:Array<String>){vala=11valn="11"when(n){"cat"->println("Cat?Really?")12.toString()->println("Closebutnotcloseenough.")a.toString()->println("Bingo!It'seleven.")}}
运行该程序时,输出为:
Bingo!It'seleven.
编辑于2024-05-20 16:06