【Swift】Switch文の使用方法!比較演算子での分岐や列挙型

この記事からわかること
- Swiftの基本構文
- Switch文とは?
- caseやdefault、fallthroughの意味と使い方
index
[open]
\ アプリをリリースしました /
SwiftのSwitch文の使い方
様々なプログラミング言語でも使用されているSwitch文
ですが、それぞれ微妙に文法が違ったりしてややこしいです。
SwiftでももちろんSwitch文が用意されているので文法や使い方、意味などをまとめておきたいと思います。
基本構文
switch 対象データ {
case 条件:
// 処理1
case 条件:
// 処理2
default:
// 処理3
}
Switch文は条件によって処理を分岐させたい時に利用する構文です。switch
の後に対象となるデータを変数や式として渡し{}
の中にcase 条件:
と羅列していきます。
条件のどれにもマッチしない場合としてdefault
の記述も必要になります。
変数の値で分岐させる
実際に使用例を見てみます。変数num
に格納されている数値によって表示を変化させます。
let num = 2
switch num {
case 1:
print("1です")
case 2:
print("2です")
default:
print("それ以外")
}
// 2です
複数の条件を指定する
複数の条件を指定する際はcase
の後にカンマ区切りで条件を羅列します。
let num = 3
switch num {
case 1,3:
print("1または3です")
case 2:
print("2です")
default:
print("それ以外")
}
// 1または3です
範囲で分岐する
決め内ではなく、数値を範囲で分岐させることも可能です。その場合は範囲を定義する...
で指定します。
let num = 5
switch num {
case 1...5:
print("1〜5の範囲内です")
case 6...10:
print("6〜10の範囲内です")
default:
print("1〜10の範囲外です")
}
// 1〜5の範囲内です
比較演算子を使って分岐する
「〇〇以上」や「〇〇未満」などは比較演算子(>や<
)を使って指定します。
let num = 8
switch num {
case ..<5:
print("5未満です")
case ..<10:
print("10未満です")
default:
print("10以上です")
}
// 10未満です
breakとfallthrough
Switch文は基本的にマッチした条件が見つかれば処理を終了し後続の条件チェックを行いません。他のプログラミング言語ではbreak
の記述が必要でしたがSwiftでは記述しなくてもマッチした条件があると自動で処理を終了します。
逆に条件にマッチした後に後続の条件チェックを実行させるにはfallthrough
を指定します。
var num = 1
switch num {
case 1:
print("1です")
num += 1
fallthrough
case 2:
print("2です")
default:
print("それ以外")
}
// 1です
// 2です
列挙型で分岐させる
Switch文には列挙型を渡すことも可能です。列挙型を指定するとコード補完で自動的に全てのcase
を記述してくれます。
enum Language {
case HTML
case CSS
case PHP
case Swift
}
let lang:Language = .Swift
switch lang {
case .HTML:
print("HTMLだよ")
case .CSS:
print("CSSだよ")
case .PHP:
print("PHPだよ")
case .Swift:
print("Swiftだよ")
}
// Swiftだよ
switch文を使った分岐処理を記述する際に列挙型を比較値として指定する場合、各項目を網羅できるように記述しないとエラーを起こしてくれます。これにより分岐処理の記述漏れを起こすことがなくなります。
switch文での条件漏れエラー
expression failed to parse:
error: switch must be exhaustive

私がSwift UI学習に使用した参考書
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。