注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。
C言語やその系統の言語では、多くの場合、switch
文を使う場合、各case
の最後には意図的にフォールスルーを行う場合を除けばbreak
文を付与しなければならなかった。というのは、C言語においては、各case
はラベルとしての意味合いしかなかったからである(C言語におけるswitch文の落とし穴も参照)。さて、Swiftではどうなっているだろうか。ここではそれについて説明を行いたい。
まず、C言語では多くの場合、以下のようなコードにしていただろう。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
int num = getNum(); switch (num) { case 0: printf("num: 0\n"); break; case 1: printf("num: 1\n"); break; case 2: printf("num: 2\n"); break; default: printf("default\n"); break; } |
一方、これをSwiftにした場合は、以下のような記述になる。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
let num = getNum() switch num { case 0: print("num: 0") break case 1: print("num: 1") break case 2: print("num: 2") break; default: print("default") break } |
これは、C言語と同様の記述である。ちなみに、Swiftでは、以下の記述の仕方もできる。
1 2 3 4 5 6 7 8 9 10 11 12 |
let num = getNum() switch num { case 0: print("num: 0") case 1: print("num: 1") case 2: print("num: 2") default: print("default") } |
上記のコードでも、break
がある場合と同様の処理になる。というのは、Swiftではラベルとしての役割にとどまらず、制御ブロックとしても機能しているからである。
なお、Swiftでもbreak
が必要になるケースがあるが、これは、何も処理が書かれていない場合に限られる。
なお、明示的にフォールスルーしたいときは、fallthrough
を明記する。
Swiftでは、C言語とは正反対の制御になるため、混乱を招く危険性がある。それを防ぐために明示的にbreak
文を加えることは悪いわけではないが、ちゃんと切り替えられるようにした方が良いだろう。

ウェブマスター。本ブログでITを中心にいろいろな情報や意見などを提供しています。ご用の方はコメントかコンタクトフォームにて。