Swiftでif文 / switch文を使って条件分岐処理を行う方法【初心者向け】

プログラミング初心者向けにSwiftでif文/switch文を使って条件分岐を行う方法について解説しています。if文の書き方、switch文の書き方を分かりやすくサンプルを元に説明しているので、スムーズに理解できるでしょう。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営する教育×テクノロジーのWebメディアです。初心者でもすぐ勉強できる記事が2,000以上あります。

Swiftで書くif文/switch文の使い方を詳しく解説しています。

プログラムを書く上で必須の知識になるので、初心者の方はぜひ書きながら理解していきましょう。

 

なお本記事は、TechAcademyのiPhoneアプリ開発オンラインブートキャンプの内容をもとに紹介しています。

 

目次

 

if文の書き方

if 文は、プログラミング言語の核とも言える構文です。Swiftでも当然サポートされています。

if 条件 {
  // 条件にマッチした時に実行される処理
}

「条件」は条件式とも呼ばれ、条件にマッチしていれば (条件式の結果が true であれば)、続く { } 内の内容を実行します。

マッチしない場合の処理は else を使って記述することができます。

if 条件 {
  // 条件にマッチした時に実行される処理
} else {
  // 条件にマッチしない時に実行される処理
}

また else if を使うといくつかの条件を列挙することができます。

if 条件A {
  // 条件A にマッチした時に実行される処理
} else if 条件B {
  // 条件B にマッチした時に実行される処理
} else {
  // 条件A にも 条件B にもマッチしない時に実行される処理
}

簡単なサンプルとして、変数 a に対して、その絶対値を b に代入する if 文は次のようになります。

 

サンプルプログラム

let a = -1
var b = 0
if a >= 0 {
  b = a  // a が 0 以上のときだけ実行
} else {
  b = -a // a が 0 より小さい (負の値) ときだけ実行
}
print("\(a) => \(b)") // -1 => 1 と表示

 

[PR] iPhoneアプリの開発で挫折しない学習方法を動画で公開中

switch文の書き方

基本構文

switch 文は、条件に当たる部分を列挙することにより、処理の分岐を分かりやすくすることができる構文です。

switch 式 {
case ラベル1:
  // 式がラベル1 にマッチした時に処理される内容
case ラベル2:
  // 式がラベル2 にマッチした時に処理される内容
default:
  // 列挙したどのラベルにもマッチしなかった場合に処理される内容 (場合によって省略可能)
}

 

複数のラベルを指定

swiftのswitch文では複数のラベルを指定して、指定したラベルのどれかに合致すれば処理を実行することが可能です。

switch 式 {
  case ラベル1:
  // 式がラベル1 にマッチした時に処理される内容
  case ラベル2,ラベル3:
  // 式がラベル2かラベル3のどちらかの条件にマッチした時に処理される内容
  default:
  // 列挙したどのラベルにもマッチしなかった場合に処理される内容 (場合によって省略可能)
}

 

複数のラベルを指定した例

例えば、ある変数 num について、その数を表現するような処理は、次のように書くことができます。

switch num {
case 0: print("none of") // <= 改行がなくてもエラーにはなりません
case 1:
  print("a single")
case 2, 3: // 複数のラベルを , で列挙することもできます
  print("a couple of")
case 4, 5, 6:
  print("some")
case 7..<10: // 範囲を指定する記法を使うこともできます
  print("several")
case 10..<20: 
  break // break を使うと、そこで switch 構文から抜けます
default: // default は必ず最後に記述します
  print("many")
}

Swift 以外のプログラミング言語では case 内で break しないと、次の case の内容を (ラベルにマッチしなくても) 処理してしまうものがあります。

Swiftでは、case 内の処理は、fallthroughという命令を置かない限り次の case の内容が実行されることはありません。

var description = ""
switch num {
case 2,4,6,8:
  description += "偶数で、"
  fallthrough // 次の case もしくは default も実行
default:
  description += "整数です。"
}

 

switch 構文と enum

switch 文は列挙を基礎とした構文なので、列挙型とも呼ばれる enum と組み合わせると、コードが分かりやすくなることが多いです。

例えば、方向を示す Direction という enum があるとします。

enum Direction {
  case up, down, left, right
}

これを使って、ある位置 location を与えられた方向 way によって制御したいというプログラムは、次のようになるかもしれません。

var location = CGPoint.zero
switch way { // way は Direction 型の変数
  case .up:    location.y -= 100
  case .down:  location.y += 100
  case .left:  location.x -= 100
  case .right: location.x += 100
}

switch文を使うことで、 way が .up の場合という形で読み取ることができます。

 

case に使えるラベル

先ほどのサンプルコードで case には範囲を指定する記法などを利用できことを示しましたが、 case のラベルには整数・範囲だけでなく、列挙型のそれぞれのメンバを指定したり、文字列などを利用することもできます。

また、 as や is を使って、 switch に与えられた式が「特定の型にマッチするとき」というような形の条件を指定することも可能で、Swift の switch は実に多彩な表現力を持っています。

switch obj {
  case is Bar: // obj が Bar だったら => if obj is Bar と同じ
    // .... 省略
  case 0 as Int: // obj が整数の 0 の場合 => if obj as? Int == 0 と同じような意味
    // .... 省略
  case 0 as Double: // obj が Double の 0.0 の場合 => if obj as? Double == 0.0 と同じような意味
    // .... 省略
  case "test" as String: // obj が String の "test" の場合 => if obj as? String == "test" と同じような意味
    // .... 省略
}

 

以上、Swiftで書くif文/switch文の使い方を説明しました。

プログラミングの中でも基本的な知識なので、概念と書き方を理解しておきましょう。

入門向けのSwift学習サイトもまとめているので、Swift習得を目指している方はご覧ください。

また、TechAcademyでは初心者でも最短4週間でオリジナルアプリが作れるiPhoneアプリ開発オンラインブートキャンプを開催しています。

期間中は現役エンジニアのメンターが毎日学習をサポートするので、独学よりも効率的に学ぶことができます。

この記事を監修してくれた方

中本賢吾(なかもとけんご)
アジマッチ有限会社 代表取締役社長

開発実績:PHPフレームワークを利用した会員制SNS・ネットショップ構築、AWSや専用サーバー下でLinuxを使用したセキュアな環境構築、人工知能を利用したシステム開発、店舗検索スマホアプリ開発など。

その他にも地域の職業プログラマー育成活動を行い、2018年には小学生がUnityで開発したオリジナルAndroidアプリをGooglePlayでリリース。ゲームで遊ぶより作ろうぜ!を合言葉に、小学生でも起業できる技術力を育成可能で有ることを証明し続けている。