こんにちは!フリーエンジニアのヤマシタです。
プログラムにおいて、処理を条件によって分岐させることはよくあります。
SwiftにもC言語やJavaのように分岐処理を行うにはif文とSwitch文が使用できます。
この記事では、
・Switch文とは
・Switch文の使い方
という基本的なSwitch文の解説から、
・fallthroughでcase文を続行する方法
・複数の条件を指定する方法
・範囲を指定する方法
・Tuple(タプル)を指定する方法
などの応用的な使い方に関しても解説していきます。
今回はそんなSwitch文の使い方についてわかりやすく解説します!
※この記事ではSwift3.1を使用しています。
Switch文とは
Switch文とは、if文のように式の値に応じて分岐処理を行うための文です。
Switch文はif文と異なりcaseで条件となる値や変数をいくつか指定して、一致するcase文の処理を実行します。
書き方:
switch 値や式 { case 値1: //・・・処理・・・ case 値2: //・・・処理・・・ case 値3: //・・・処理・・・ default: //・・・処理・・・ }
switchの後に判定を行うための値や式を記述します。
続くcaseでswitchで指定した値や式とマッチした場合は、そのcaseの処理が実行されます。
Switch文の使い方
ここではSwitch文の基本的な使い方を見ていきましょう!
基本的な使い方
以下にSwitch文を使用して、変数の値を判断する簡単なサンプルを紹介します。
サンプルプログラム1
var score = 70 switch score { case 100: print("100です。") case 70: print("70です。") case 40: print("40です。") default: print("その他の値") }
実行結果:
70です。
switchで指定した変数scoreには70が格納されているので「case 70」でマッチして、そのcaseの処理が実行されます。
また、以下のようにswitchの判定を式にすることもできます。
サンプルプログラム2
var score = 70 switch score + 30 { case 100: print("100です。") case 70: print("70です。") case 40: print("40です。") default: print("その他の値") }
実行結果:
100です。
Switch文の応用的な使い方
fallthroughでcase文を続行する
Objective-Cではcase処理を抜けるためには、breakを指定する必要がありましたが、Swiftのswitchでは不要になりました。
そのため、マッチしたcase処理を実行したあとに、意図的に次のcase処理を実行したい場合にはfallthroughを指定します。
サンプルプログラム
var num = 10 switch num { case 10: print("10です。") num += 10 fallthrough case 20: print("20です。") case 40: print("40です。") default: print("その他の値") }
実行結果:
10です。 20です。
このようにfallthroughを指定すれば、次のcase文が実行されることがわかりますね!
複数の条件を指定する
switchの後の条件に,(コンマ)で区切って複数の条件を指定することができます。
サンプルプログラム
let str = "samurai" switch str { case "samurai","engineer": print(str) default: print("その他の値") }
実行結果:
samurai
範囲を指定する
caseでの条件は(数値1…数値2)と指定することで、その範囲の処理で分岐することができます。
サンプルプログラム
let score = 70 switch score { case (90...100): print("90-100の範囲") case (50...89): print("50-89の範囲") case (1...49): print("1-49の範囲") default: print("0") }
実行結果:
50-89の範囲
Tupleを指定する
Tuple(タプル)は配列やディクショナリのように複数の値を保持することができます。
Switch文ではTubleを利用して分岐を行うことが可能です。
サンプルプログラム
let str = ("samurai", "engineer") switch str { case ("samurai", ""): print("samurai") case ("", "engineer"): print("engineer") case ("samurai","engineer"): print("samurai engineer") default: print("それ以外") }
実行結果:
samurai engineer
まとめ
ここではSwitch文について、
・Switch文とは
・Switch文の使い方
・fallthroughでcase文を続行する方法
・複数の条件を指定する方法
・範囲を指定する方法
・Tuple(タプル)を指定する方法
などのさまざまな使い方について解説しました。
Switch文はプログラムでよく使用する条件式ですので、使い方はよく理解しておきましょう!
もしSwitch文の使い方を忘れてしまったら、この記事を思い出してくださいね!