今回は、前回投稿した記事の条件分岐の第二弾で、switchについて学習したので、アウトプットしていきます
※以下の内容は、学習内容のアウトプット用のため、誤りがある場合があります。予めご了承ください
switch文
title.swift
switch 値 {
case 条件:
"条件が合致した時に実行されるコード"
case 条件:
"条件が合致した時に実行されるコード"
case 条件:
"条件が合致した時に実行されるコード"
default:
"どの条件にもマッチしなかった場合に実行されるコード"
}
- switch文を用いて網羅的に条件分岐を記述できます。
- 条件はどのデータ型(String型、Int型、Double型、enum型)でも指定が可能です。
サンプル
title.swift
let day = "水曜日"
switch day {
case "月曜日":
print("酢豚")
case "火曜日":
print("親子丼")
case "水曜日":
print("豚の生姜焼き") // ⇦条件が成立するこのコードが実行されます。
case "木曜日":
print("鯖の塩焼き")
case "金曜日":
print("ラーメン")
case "土曜日":
print("カレー")
default:
print("うどん")
}
また少し変化を加えてみよう。もし同じ条件を組み込んだ時にはどのような挙動をするのでしょうか。
title.swift
let day = "水曜日"
switch day {
case "水曜日":
print("酢豚") // ⇦ 最初に条件が成立するこのコードが実行されます。
case "火曜日":
print("親子丼")
case "水曜日":
print("豚の生姜焼き") // ⇦ 既に条件が成立しているため、このコードは実行されない。
default:
print("うどん")
}
fallthrough(フォールスルー)
switch文は条件が成立しコードが実行したら処理は終了します。
条件が成立した際に、意図的に直下のcaseのコードも評価したい場合はfallthroughを使用します。
サンプル
title.swift
for value in 1...6 {
switch value {
case 1:
print(" \(value)の時にCase1を処理")
fallthrough
case 2:
print(" \(value)の時にCase2を処理")
case 3:
print(" \(value)の時にCase3を処理")
default:
print("Default Case\(value)")
}
}
実行結果
// 1の時にCase1を処理 // 1で条件が合致し処理を実行
// 1の時にCase2を処理 // 1で条件が合致し、直下のcase2処理を実行
// 2の時にCase2を処理
// 3の時にCase3を処理
// Default Case4
// Default Case5
// Default Case6
今回のサンプルコードの場合、1が条件で合致しその処理を行いましたが、fallthroughによって直下のcase 2"の処理も同時に実行しました。
列挙型(enum型)で条件分岐をする
switchは網羅的に条件分岐を指定することができ、条件漏れの可能性を低くするメリットがあります。
しかしcaseの条件を文字列に指定した際にタイポによる可能性があり、安全なコードではなくなります。
これを列挙型とセットにすることにより、簡潔且つ安全に条件分岐を行うことができるようになります。
サンプル
title.swift
enum JLeagueTeam {
case fcTokyo
case sanfrecceHiroshima
case kawasakiFrontale
}
let team = JLeagueTeam.sanfrecceHiroshima
switch team {
case.fcTokyo:
print("ユニフォームの色は赤と青")
case.sanfrecceHiroshima:
print("ユニフォームの色は紫")
default:
print("ユニフォームの色は水色")
}
まとめ
今回も条件分岐制御構文の基本であるswitch文について纏めてさせて頂きました!
基本中の基本であるが故にしっかり身につけておく必要がありますね。
次回はこれらを踏まえてif文とswitch文の使い分けについて、もう少し深堀して纏めた記事を出したいと思います。
それでは!