【プログラミング初心者】Swift基礎~if文・switch文~


はじめに

今回は条件判定のために必要な構文、if文switch文の書き方について紹介します。
条件文は多少書き方の違いはありますがSwift以外の多言語全てで使用されるプログラムの基本構文の1つです。
この投稿で書き方をしっかりと覚えておいてください。

条件文とは

プログラムでは異なる条件毎に処理を分岐させアプリを制御します。

例えば現実的な例としてマンガアプリで考えてみます。
そのアプリで購入したマンガを表示する処理を実装するとしましょう 。
その場合マンガのページを表示するにはどのような条件が考えられるでしょうか?

対象のマンガは購入済みかどうか、未購入の場合は購入するためのアプリ内マネーが足りているかどうか、通信エラーが発生したかどうか、etc.
考え出すとキリがありませんが、こういった考えられる状況全てに対して条件分岐させそれぞれ異なった処理を実装していく必要があります。

こういった場合に条件文と呼ばれるif文やswitch文を使用して制御していきます。

if文

それでは具体的な書き方を紹介していきます。
構文としては以下の通りです。

if 条件 {
    条件が真の場合の処理
} else {
    条件が偽の場合の処理
}

条件にはBool型を入れる必要があります。

ifに与えた条件がtrueの場合最初の処理ブロックに入ります。
falseとなった場合はelseの処理ブロックに入りそれぞれの処理を実行します。
またそれぞれの処理ブロックはどちらか片方しか実行されず、ifに入った場合elseは実行されません。

条件はBoolであれば変数、メソッド、式と何でも構いません。

// 変数
let boolValue = true
if boolValue {
    print("boolValue is true")
} else {
    print("boolValue is false")
}
// 式
let intValue = 1
if intValue == 1 {
    print("intValue is 1")
} else {
    print("intValue is not 1")
}
// メソッド
func boolFunction() -> Bool {
    return true
}

if boolFunction() {
    print("boolFunction() is true")
} else {
    print("boolFunction() is false")
}

elseは必須ではなくifのみでも使用できます。

if value > 0 {
    print("0より大きい")
}

またif文同士繋げることも可能です。

if value > 10 {
    print("10より大きい")
} else if value < 10 {
    print("10より小さい")
} else {
    print("それ以外")
}

条件はBoolあればいいので、論理演算子を使って複数の条件を組み合わせることができます。

if value >= 0 && value < 10 {
    print("0以上10未満")
} else {
    print("それ以外")
}

switch文

Swiftのswitchはかなり汎用性が高く、数多くの書き方があります。
今回は基本となる書き方のみを紹介します。

基本構文は以下となります。

switch  or  {
case 値1:
    値1の場合の処理
case 値2:
    値2の場合の処理
...
default:
    caseに当てはまらなかった場合の処理
}

具体的な実装は以下のようになります。

let value = 0
switch value {
case 0:
    print("0です。")
case 1:
    print("1です")
case 2:
    print("2です")
default:
    print("それ以外です")
}

このようにswitchに与えた値valueに対して判定を行ないます。
ifとの違いは条件ではなく値そのものに対する判定ということです。

当てはまるcaseから次のcaseまでの間の処理が実行されます。
それ以外の処理は実行されません。
(他言語を触った人からするとbreakがないのに次が実行されないことに違和感があるかもしれません。Swiftではbreakは不要です。)

switchに与える型は値の判定ができれば構いません。
とはいえ値の判定ができるのは数値型、文字列型、列挙型くらいで、現実的に使うのはこのあたりの型になるかとは想います。

1つのcaseに複数指定することも可能です。

let club = "野球"
switch club {
case "野球", "サッカー", "テニス":
    print("運動部です")
case "吹奏楽", "茶道":
    print("文化部です")
default:
    print("未定義の部活です")
}

また数値の場合(数値1…数値2)とすることで範囲によって条件を分岐させることも可能です。

let score = 80
switch score {
case (80...100):
    print("優")
case (70...79):
    print("良")
case (60...69):
    print("可")
case (0...59):
    print("不可")
default:
    print("未定義")
}

以上のように値に対して判定を行ない、当てはまるcaseの処理を実行するのがswitch文です。
いくつか例を紹介しましたがまだまだ使い方は色々あります。
条件判定する際は調べてみてください。

最後に

今回はプログラミングする上では欠かせない条件分岐の方法としてifswitchを紹介しました。
どちらも似たようなものですね。
実際switchif~else if~...と条件分岐を行っても同じ結果が得られます。
プログラムを管理しやすい方、ミスが起きにくい方を状況に応じて選んでいきたいところです。

今回の内容は以上です。
本記事とは別でプログラミング未経験からiOSアプリ開発が行えるようになることを目的とした記事を連載しています。
連載は以下にまとめていますのでそちらも是非もご覧ください。
http://naoyalog.com/