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

この記事からわかること

  • Swift基本構文
  • Switch文とは?
  • casedefaultfallthrough意味使い方

index

[open]

\ アプリをリリースしました /

みんなの誕生日

友達や家族の誕生日をメモ!通知も届く-みんなの誕生日-

posted withアプリーチ

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のenum(列挙型)を使ってswitch文を使用の際に発生しているエラー

私がSwift UI学習に使用した参考書

まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。

ご覧いただきありがとうございました。

searchbox

スポンサー

ProFile

ame

趣味:読書,プログラミング学習,サイト制作,ブログ

IT嫌いを克服するためにITパスを取得しようと勉強してからサイト制作が趣味に変わりました笑
今はCMSを使わずこのサイトを完全自作でサイト運営中〜

New Article

index