为同一情况切换多个值的情况

问题描述 投票:0回答:4

我想知道在 switch / case 中设置多 case 语句的语法。
例如:

String commentMark(int mark) {
    switch (mark) {
        case 0 : // Enter this block if mark == 0
            return "Well that's bad" ;
        case 1, 2, 3 : // Enter this block if mark == 1 or mark == 2 or mark == 3
            return "Gods what happend" ;
        // etc.
        default :
            return "At least you tried" ;
    }
}

我找不到正确的语法来设置多种情况(

case 1, 2, 3 :
行),在 Dart 中是否可能?

我在 pub.dev 文档和 dart.dev 上都没有找到任何信息。

我试过了:

case 1, 2, 3

case (1, 2, 3)

case (1 ; 2 ; 3)

case (1 : 2 : 3)

case 1 : 3

还有更多!

flutter dart switch-statement
4个回答
111
投票

继续执行,直到达到

break;
。因此,您可以一个接一个地列出案例,以便在其中任一案例上执行以下代码。

String commentMark(int mark) {
    switch (mark) {
        case 0 : // Enter this block if mark == 0
            return "mark is 0" ;
        case 1:
        case 2:
        case 3: // Enter this block if mark == 1 or mark == 2 or mark == 3
            return "mark is either 1, 2 or 3" ;
        // etc.
        default :
            return "mark is not 0, 1, 2 or 3" ;
    }
}

上面的

return
语句用于退出该函数。如果您不想
return
,当然,您必须在每个块之后使用
break;
。下面这段代码与上面的代码等效。

String commentMark(int mark) {
    String msg;
    switch (mark) {
        case 0 : // Enter this block if mark == 0
            msg = "mark is 0" ;
            break;
        case 1:
        case 2:
        case 3: // Enter this block if mark == 1 or mark == 2 or mark == 3
            msg = "mark is either 1, 2 or 3" ;
            break;
        // etc.
        default:
            msg = "mark is not 0, 1, 2 or 3" ;
            break; // this is a good habit, in case you change default to something else later.
    }
    return msg;
}


0
投票

我们可以在单个开关案例中使用 or 操作符,而不是使用多个案例。

switch (date) {
        case 1 | 21 | 31:
            return "st";
        case 2 | 22:
            return "nd";
        case 3 | 23:
            return "rd";
        default:
            return "th";
        }

0
投票

如果您想使用多种情况,您应该使用以下语法:

     switch (yourCase) {    
            case 1:
            case 2:
            case 3: 
                  // Enter this block if yourCase == 1 or yourCase == 2 or yourCase == 3
                var msg = "your code to for cases either 1, 2 or 3" ;
                break;
            case 4: 
                  // Enter this block if yourCase == 4
                break;
                  }

0
投票

Dart 3.0 具有 Pattern 功能,您可以使用它来使其变得简单。

有关详细信息,请参阅文档链接https://dart.dev/language/patterns

String commentMark(int mark) {
    return switch (mark) {
        0 => "mark is 0",
        1 || 2 || 3 => "mark is either 1, 2 or 3",
        _ => "mark is not 0, 1, 2 or 3"
   };
}

打印(评论标记(2));

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