
条件分岐はif文!Dartマスターに一歩近づいたぞ~!



条件分岐はif文だけだと思っているようだね?



なん…だと…っ!?



じゃあここでは条件分岐のひとつ、switch文について学んでいこう!
ここでは条件分岐のひとつ、switch文について解説していきます!
前回のif文の記事はこちら!
【Dart】switch文とは
前回はif文の書き方を学びました。これで「もし~なら」という表現ができますね。
ではこのケースではどうでしょう。
aが0の時は〇〇、aが1の時は〇〇、aが2の時は〇〇、aが3の時は〇〇、といった場合どうしますか?



こうじゃい!





うーん、できてるんだけどまどろっこしいよね。
これをもう少しすっきり書くことはできないでしょうか。
そこでswitch文の登場です!上記のようにelse-if文をつなげずとも複数の比較ができる構文です!
上記の例をswitch文ですっきり書いてみましょう!





おおっ!?圧倒的に見やすくなったぞ!
複数の条件で分岐する場合、switch文を書くことでif文よりもみやすく書けるケースがあります!
【Dart】switcu文の書き方
Dart言語でのswitch文の書き方は以下のようになります。
switch(式){
case 値1:
// 式と値1が等しい場合の処理
break;
case 値2:
// 式と値2が等しい場合の処理
break;
~必要な数だけ繰り返す~
default:
// どのcase文とも等しくなかった時の処理
}



このdefaultは何?



default文はcase文のどの値とも一致しなかった場合に実行される個所だよ!必要ない場合は省略もできるんだ。
先ほどのコードにdefault文を追加したものがこちらになります。
.png)
.png)
break文とフォールスルー



case文の最後に入っているbreakはどういう意味なの?



break文はそこで処理を抜けるという意味だよ。つまりbreak文に差し掛かったらswitch文は終了する、ということだね。



ということはbreak文はcase文の最後に必ず必要なのかな?



それが必ずしもそうしなければならないというわけでもないんだ。
break文をかかないとどうなるでしょう?Dart言語では、
- case文に処理がある場合、case文の中の処理が終わるとswitch文を抜ける(break文を書いたときと同じ)
- case文に処理がない場合、フォールスルーが発生する
という処理の流れになります。



フォールスルー…なんかかっこよくてムズい言葉がでてきたな…。
フォールスルーとは、break文を書かないことでそこでswitch文を終わらせず、次の処理(case文)も走らせてしまうことです。例を挙げて見ましょう。


変数aが0の場合、処理は何も書かれていません。しかし、break文も書かれていません。
するとaが0だった時の処理は続けて「case 1:」の処理も行います。
つまり、フォールスルーを用いることで「aが0か1」の場合の処理をまとめて書くことができます。



意図的にフォールスルーを利用する時以外は必ずbreak文を書くようにしよう。バグや不具合の元になるからね。
switch文で様々な条件分岐を!



switch文を使えば視覚的にもみやすい条件分岐が書けそうだね!



if文よりも比較方法が限定されるけど、switch文が使える場合はこちらを使うと綺麗に書けるケースもあるよ!



いろいろ知識が増えてきてやる気スイッチオン!
■参考文献
コメント