kotlin的'when'表达式如何作为这个switch-case代码进行处理?

问题描述 投票:-1回答:1
int num = 100;
char c = 'a';

c = someBigTask(c);

switch (c) {
case 'a':
    num += 100;

case 'c':
    num += 10;

case 'd':
case 'e':
    num += 100;
}

我希望在另一个条件中使用'when'表达式来消除相同的代码,就像这个switch-case代码一样,但我找不到解决方案..


我确实喜欢这个问题:

var num = 0
when(c){
            'a' -> num += 100
            'a', 'c' -> num += 10
            'a', 'c', 'd', 'e' -> num += 100
            else -> 0
        }

我得到的结果只执行qazxsw poi ..

我可以在此问题中仅使用'when'表达式获得解决方案吗?

kotlin switch-statement kotlin-when
1个回答
2
投票

在Kotlin中,等效的'a' -> num += 100表达式如下:

when

请注意,在这种情况下,val c = // some char val num = 100 + when (c) { 'c' -> 10 'a', 'd', 'e' -> 100 else -> 0 } 情况是必要的else,因为它用作en表达式,即它必须涵盖when must be exhaustive的所有可能值。例如,如果cc(或Boolean或具有有限域的任何其他值),那么你可以在没有enum的情况下覆盖所有可能的情况,因此编译器将允许以下内容:

else

如果val c = // some boolean val num = 100 + when (c) { true -> 10 false -> 0 } 不是用作表达式而是用作传统的控制流语句(如Java 12之前的when语句),则不需要详尽无遗,如下面的代码片段所示:

switch
© www.soinside.com 2019 - 2024. All rights reserved.