条件分岐に便利なSwiftのSwitch文の使い方まとめ

19/03/03 16:13:20     19/04/08 10:43:06

SwiftのSwitch文

Switch文はSwiftだけでなく複数のプログラミング言語で用意されている概念です。

条件分岐のコードとしてif文の方が知名度が高いかと思いますが、case文は条件設定を複数行い、指定した条件ごとに処理を記述できるメリットがあります。

if文は基本的に二通りに条件分岐していくので、いっぺんに条件分岐させたいときはcase文が便利です。

case文の基本的な使い方

case文の構文は以下のようになります。

switch 値や式 {
case 値1:
    //処理
case 値2:
    //処理
case 値3:
    //処理
default:
    //処理
}

caseごとに値を設定し、その値に合致すると処理が実行されます。

どの値にも合致しない場合、defaultが実行されます。Switch文は他のプログラミング言語にもありますがSwiftのcase文は一点特殊なポイントがあり、それはcase文のなかでbreakする必要がないということです。

プログラミング言語によってはcase文のなかでbreakさせないと以降のbreak文も判定してしまうことになり、最終的にdefaultも実行されます。しかしSwiftの場合case文を一つ実行したら自動的に他のcase文やdefaultは実行せずに抜ける仕様になっています。

次にサンプルコードは以下です。

var score = 70

switch score {
    case 100:
        print("100です。")

    case 70:
        print("70です。")

    case 40:
        print("40です。")

default:
    print("その他の値")
}

このコードを実行すると、70です。と出力されます。

また、以下のように変数に数値を足し引きして計算して判定することも可能です。

var score = 70

switch score + 30 {
    case 100:
        print("100です。")

    case 70:
        print("70です。")

    case 40:
        print("40です。")

default:
    print("その他の値")
}

このサンプルコードを実行すると、100です。と出力されます。

あえて次のcase文も実行するコード

上で説明した通り、SwiftのSwitch文はbreakしなくてもcase文を実行したら抜けます。

しかし、あえてcase文実行後に他のcase文を実行したい、defaultの処理も行いたい、といった場合もあるでしょう。

そこで使えるコードがfallthroughです。

fallthroughを使用することで、他のプログラミング言語だとbreakを書いていないような状態になります。SwiftのSwitch文の場合初期状態でbreakするようになっており、breakを解除するためには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です。

case文のなかで複数の値を指定する

case文は値が一致したら処理を実行するコードですが、一つのcase文のなかで複数の値を指定することが可能です。

そして、そのうちのどれかの値が一致すればcase文のなかの処理が実行されます。サンプルコードは以下です。

let str = "ppap"

switch str {
    case "ppap","oppapi":
    print(str)
default:
    print("その他の値")
}

上記のコードを実行すると、ppapと出力されます。

変数のなかにはppapが入っているのでcase文が実行されて変数が出力されましたが、仮にoppapiが入っていた場合もカンマ区切りで指定しているため同様にcase文が実行され、出力されます。

範囲指定で実行する

case文は特定の値だけでなく、範囲で指定することもできます。

たとえば以下のサンプルコードのようなことです。

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の範囲と出力されます。

範囲の指定方法は、上記のサンプルコードのように(数値1…数値2)という形式で指定します。

where句での条件式

Switch文の応用的な使い方として、where句を使った方法を紹介します。

とは言ってもcaseの使い方自体は同じなので、そのなかでwhere句指定できるというだけです。SQLなどの経験がある方は直感的にわかるかと思いますが、そうでなくてもなんとなく指定内容はわかるかと思います。

もしもよくわからなければ今回どうしても把握しなければならない内容ではないので、少しずつ理解していけば良いかと思います。上で紹介した基本事項を押さえておけばまずは問題ありません。

let score = (50, 90)

switch score {
case (let mathScore, let engScore) where mathScore >= 80 && engScore >= 80 :
    println("優秀!")

case (let mathScore, let engScore) where mathScore < 80 && engScore >= 80 :
    println("数学をもっと頑張りましょう.")
    println("英語は\(engScore)点")

case (let mathScore, let engScore) where mathScore >= 80 && engScore < 80 :
    println("英語をもっと頑張りましょう")
    println("数学は\(mathScore)点")

case (let mathScore, let engScore) where mathScore < 80 && engScore < 80:
    println("残念")

default:
    println("?")
}

このサンプルコードを実行すると、以下のように出力されます。

数学をもっと頑張りましょう
英語は90点

まとめ

以上、SwiftでのSwitch文について解説しました。

他の言語経験のある方は、普通にSwitch文自体は知っているかと思います。SwiftでもSwitch文の書き方はだいたい同じで、注意点としてはbreakがいらない、breakの機能を消すためには別途コードを追記する必要がある、といったことです。

だいたいの場合は一つのcase文を実行したら他のcase文やdefaultは実行しないので、結果的にSwiftのSwitch文はbreakを書かなくて済む分便利な場合が多いでしょう。すべてのcase文にbreakと書くのは案外冗長なので、Swiftは既存のプログラミング言語の反省点が活かされてます。

if文との使い分けは他のプログラミング言語とまったく同じです。

案件量が豊富なアルマサーチ

アルマサーチ

最後に、アルマサーチのご紹介!

アルマサーチはフリーランス向けに案件をご紹介することに特化したエージェントサービスです。豊富な案件量から、安定して継続的な案件のご紹介を実現しており、口コミから登録エンジニアが急増中です。

アルマサーチが選ばれる理由

  1. 豊富な案件量。週3〜4日の案件や在宅リモート案件も。
  2. 優秀なコンサルタント陣。
  3. 案件に参画後もしっかりサポート。

豊富な案件量

フリーランス向けに特化し、業界屈指の案件量を誇ります!週3〜4日の案件や、在宅リモート案件もありますし、その他あらゆる希望をしっかりお伝えください。最適な案件のご紹介をさせていただきます。

優秀なコンサルタント陣

技術に疎く、開発の希望を伝えても響かないエージェント・・・嫌ですよね。アルマサーチにはそのような者は一切おりません!さらに独立にまつわる税金や保険関係に詳しいスタッフが徹底的にサポートさせていただきます。

案件に参画後もしっかりサポート

常駐先が決まった瞬間に、一度も連絡が取れなくなるエージェント・・・いますよね?アルマサーチでは、そのようなことは一切ありません!常に電話やメールは即対応しますし、月に1度のランチミーティングなどから現場の状況を細かくヒアリングし、就業環境改善に尽力いたします。

相談する

▼Swift関連の記事一覧
1, 【Swiftのフリーランス案件情報付き】仕事やエンジニアの将来性・学習方法!
2, 繰り返し処理に使えるSwiftのfor文とfor-in文の便利な使い方まとめ
3,(この記事)条件分岐に便利なSwiftのSwitch文の使い方まとめ
4, アプリ開発でよく使うSwiftの4つの文法を解説します
5, Swiftのoptional型を使いこなすための7つのポイント
6, Swiftで文字列を扱うためのstring型の使い方
7, Swiftでの配列の宣言・初期化・代入・参照の方法まとめ
8, 実際の開発現場でのSwiftの変数・定数の使われ方を解説します
9, Swiftでif let文を使って出来ることとguard letの使い分けに関して
10, 開発現場でよく使うSwiftのif文の条件分岐をまとめました
11, SwiftにおけるTupleの使い方とわかりやすく解説します
12, 初心者にオススメのSwiftのサンプルコードをまとめてみました
13, SwiftのString、Int、Doubleの型の変換方法をまとめました
14, 開発現場で役に立つSwiftのクロージャの使い方
15, Swiftでwhileを使って上手に繰り返し処理を行おう
16, Swiftで文字列の長さをチェックするのにlengthを使ってみよう
17, Swiftのdictionaryの使い方と初期化方法をまとめました
18, Swiftの値渡しと参照渡しに関するまとめ
19, Swiftで参照渡ししたい時のinoutの便利な使い方
20, Swiftでfor-in文でindexを使いたい時の方法まとめ
21, Swiftでのクラスとstruct(構造体)の使い分けを解説します

人気記事

編集部おすすめ記事

この記事を読んだ人はこんな記事を読んでいます

案件探しやフリーランスになるための相談する