開關盒
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;
}