注意: この記事は1年以上前に掲載されたものです。情報が古い場合がありますのでお気を付け下さい。
C言語やその系統の言語では、多くの場合、switch
文を使う場合、各case
の最後には意図的にフォールスルーを行う場合を除けばbreak
文を付与しなければならなかった。というのは、C言語においては、各case
はラベルとしての意味合いしかなかったからである(C言語におけるswitch文の落とし穴も参照)。さて、Swiftではどうなっているだろうか。ここではそれについて説明を行いたい。
まず、C言語では多くの場合、以下のようなコードにしていただろう。
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にした場合は、以下のような記述になる。
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では、以下の記述の仕方もできる。
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を中心にいろいろな情報や意見などを提供しています。主にスマートフォン向けアプリやウェブアプリの開発を携わっています。ご用の方はコメントかコンタクトフォームにて。