Mac業界の最新動向はもちろん、読者の皆様にいち早くお伝えしたい重要な情報、
日々の取材活動や編集作業を通して感じた雑感などを読みやすいスタイルで提供します。

Mac Fan メールマガジン

掲載日: 更新日:

第6回 switch文の動きを細かく制御しよう

著者: 崎谷実穂

第6回 switch文の動きを細かく制御しよう

switch文で数値の判定をするには

数値を扱ったswitch文

前回学んだ「switch文」は、変数を複数の値と比較して、条件がマッチしたら、該当するプログラムを実行するものでした。では、上のプログラムが書かれたとき、どのような処理が実行されるでしょうか。

Lesson 1●switch文で複数の値を判定してみよう

まずは、switch文についておさらいしましょう。switch文では、基本となる変数(上の例題の場合は「3」)を、「case」に続けて書いた複数の値と比較します。この「case」の右に書く判定用の値を「ラベル」と呼びます。右ページの場合は、「1」や「34」、「1…99」などがラベルです。そして、条件がマッチしたら、次の行に書かれているプログラムを実行します。

なお、「ラベル」は「,(カンマ)」で区切って複数書くことも可能です。下にある右側のプログラムでは、同じ処理が何度も出てきて無駄が多いのがわかりますか? カンマを使ってそれらを1つの行にまとめると、左側のプログラムのようにすっきりします。

まとめるとすっきり!

同じ処理が行われる場合は、caseの中にマッチさせたい値を「,」で区切って複数入れてみましょう。すると、どれかの条件にマッチしたときに処理が行われるようになります。上記のプログラムでは2つの値を入れていますが、3つ以上入れることも可能です。

処理が重複していて見づらい

たとえば上のプログラムでは、「case」が「MacBook Pro」と「iMac」の場合の出力結果が同じ。ともに「Retinaディスプレイです。」と出力されます。間違いではないのですが、少し冗長で読みづらい印象を受けます。

Lesson 2●switch文の動きを細かく制御しよう

Swiftのswitch文では、caseは上から順番に比較され、条件に当てはまる処理を行ったらswitch文を抜けます。たとえば、右ページの例題の場合、「Number」に代入されているのが「1」であれば、「1です。」と出力され、その時点でswitch文を抜けます。その下に書かれている「1…99」という条件を続けて比較して、「100未満です。」と出力されることはありません。

ただし、これはあくまでSwiftのお話。他の言語で書かれた場合、右ページのような書き方をすると、次の処理が実行されてしまうこともあります。そこで、「case」の終わりに「break」と書くことが求められるのです。そうすれば、マッチした場合に次の処理は実行されません。

また、Swiftで書いたうえで、条件にマッチしてもswitch文を抜けさせず、続けて次の「case」の処理を行いたい場合は「fallthrough」を使います。そうすると、強制的に次の「case」や「default」の処理を実行してくれます。しかし、次の行の「case」のラベルを無視して実行してしまうため、「case」を設定している意味はなくなります。使用するシーンは限られますが、覚えておくとよいでしょう。

「fallthrough」で強制的に処理を行う

このプログラムで、たとえば「Number」に「100」が代入されていたら、「fallthrough」が書いてあるので、「100~154です。」と「数字です。」のどちらも出力されます。意図的に次の処理を実行したいときに便利ですが、使うシーンは限られるといってよいでしょう。

崎谷実穂

ビジネス、IT、教育関係の記事・書籍のライティングを中心に活動するライター。プログラミングの経験はまったくなし。

 

びび

Swiftに詳しいツバメ。ノンプログラマーにも丁寧にプログラミングを教えてくれます。