开关盒
Dart 有一个 switch case,可以用来代替 long if-else 语句:
var command = 'OPEN';
switch (command) {
case 'CLOSED':
executeClosed();
break;
case 'OPEN':
executeOpen();
break;
case 'APPROVED':
executeApproved();
break;
case 'UNSURE':
// missing break statement means this case will fall through
// to the next statement, in this case the default case
default:
executeUnknown();
}
你只能比较整数,字符串或编译时常量。比较对象必须是同一个类的实例(而不是其任何子类型),并且该类不能覆盖==。
Dart 中切换的一个令人惊讶的方面是非空案例子句必须以休息结束,或者不太常见,继续,抛出或返回。也就是说,非空案件条款不能落空。你必须显式结束非空案例子句,通常是中断。如果省略 break,continue,throw 或 return,则会收到静态警告,并且代码将在运行时在该位置出错。
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
// ERROR: Missing break causes an exception to be thrown!!
case 'CLOSED': // Empty case falls through
case 'LOCKED':
executeClosed();
break;
}
如果你想要在非空的 case
中使用,你可以使用 continue
和一个标签:
var command = 'OPEN';
switch (command) {
case 'OPEN':
executeOpen();
continue locked;
locked: case 'LOCKED':
executeClosed();
break;
}