この記事では、Dartのswitch文について書いていきます。
サンプル
void main(){
int score = 3;
switch (score) {
case 3:
print('A判定');
break;
case 2:
print('B判定');
break;
case 1:
print('C判定');
break;
}
}
書き方
switch (//条件) {
case //条件:
//処理
break;
default://defaultは無くてもかまいません
//処理
}その他の注意点
複数の条件をまとめたい場合(空の case)
case の中に何も処理を書かない(空にする)と、次の case へ処理が合流します。この場合も break は書きません。
void main(){
String animal = 'dog';
switch (animal) {
case 'cat':
case 'dog':
print('ペット'); // 'cat' と 'dog' のどちらでもここが実行される
default:
print('その他');
}
}※新しくDart 3以降は case 'cat' || 'dog': のように論理演算子 || を使って1行で複数の条件を比較する書くことも可能になりました。
void main(){
String animal = 'dog';
switch (animal) {
case 'cat' || 'dog':
print('ペット'); // 'cat' と 'dog' のどちらでもここが実行される
default:
print('その他');
}
}処理の途中で明示的に抜けたい場合(break が必要なケース)
case 内の処理の途中で、特定の条件(if文など)によってそれ以降の処理をスキップして switch を抜けたいときだけ break を使用します。breakを使用することにより、以下の処理を行いません。
void main(){
int score = 100;
bool isBonusPeriod = true;
switch (score) {
case 100:
print('満点です!');
if (isBonusPeriod) {
print('ボーナス獲得!');
break; // ここでswitch文を終了する
}
print('通常期間の満点です'); // isBonusPeriodがtrueなら、ここは実行されない
}}フォールスルー
どれにも条件が合致しない場合かつbreak文がない場合、以下のような出力になります。具体的にはswitch文が無視されその下の処理に移行されます。
void main() {
int x = 5;
switch(x)
{
case 1:
print('1です。');
case 2:
print('2です。');
case 3:
print('3です。');
}
print('終わり!');
}Dartのswitch文
- case文に処理がある場合、case文の中の処理が終わるとbreakを必要とせずswitch文を抜ける
- case文に合致する処理がない場合、フォールスルーが発生する
簡略化した書き方
具体的にはbreakを必要としません。これはDart3で新しく追加された機能でcaseに合致した処理があれば実行しbreakなしでswitch文から抜け出せます。
void main(){
String status = 'closed';
switch (status) {
case 'open':
print('公開中'); // 処理が終わると自動でswitchを抜ける
case 'closed':
print('終了');
default:
print('不明');
}
}
