我想知道在 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
继续执行,直到达到
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;
}
我们可以在单个开关案例中使用 or 操作符,而不是使用多个案例。
switch (date) {
case 1 | 21 | 31:
return "st";
case 2 | 22:
return "nd";
case 3 | 23:
return "rd";
default:
return "th";
}
如果您想使用多种情况,您应该使用以下语法:
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;
}
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));