Codable Tech Blog

iPhoneアプリケーション開発と AWS(Amazon Web Service)活用に関する記事を配信

if文

Swift V4.0に対応しました

プログラムは単純に順番に処理を実行するだけでなく、ある変数の値がAであれば処理Aを実行して、値がBであれば処理Bを実行するといった形で処理を分岐させることができます。
Swiftでは処理を分岐させるための命令としてif文、switch文が用意されています。

if文

ある条件式を設定し、その条件式が成り立つか、成り立たないかで処理を場合分けするのがif文です。siwftでのif文の構文は次のようになります。

if 条件式 {
    条件式が成り立った場合の処理を記述
}

条件式に使用できる型

条件式にはBool型の値を指定します。
falseであれば条件が不成立、trueであれば条件が成立したと判断されます。

if true {
    print("true!!")
}

if false {
    print("false!!")
}
//結果
//true!

条件式がtrueの場合、ifブロックの中のprint文が実行され、true!!という文字がコンソールに出力されます。条件式がfalseの場合、ifブロックの中の処理は実行されません。

比較演算子

if文を利用する時、単純にtrueとfalseを指定して処理を分岐させるだけではあまり使い道がありません。Swiftでは比較演算子と呼ばれる演算子があります。これは2つの値を比較し、比較結果に応じてtrueもしくはfalseを算出する演算子です。比較演算子には次のものがあります。

演算子 説明
a == b aとbが等しければtrue、等しくなければfalse
a != b aとbが等しくなければtrue、等しければfalse
a > b aがbより大きければtrue、aとbが等しい、もしくはaがbより小さければfalse
a < b aがbより小さければtrue、aとbが等しい、もしくはaがbより大きければfalse
a >= b aとbが等しい、もしくはaがbより大きければtrue、aがbより小さければfalse
a <= b aとbが等しい、aがbより小さければtrue、aがbより大きければfalse
var num=15
if num > 10 {
    print("numは10より大きい")
}
if num < 10 {
    print("numは10より小さい")
}
//結果
//numは10より大きい

この例ではnumの値が15ですのでnum > 10の条件式が成立し、「numは10より大きい」という文字列がコンソールに出力されます。しかし、num < 10の条件式は成立しませんので、「numは10より小さい」という文字列は出力されません。

論理演算子

値の比較を行うとき、複数の条件式を組み合わせたいことがよくあります。
たとえば、「ある数が10以上かつ20以下であれば条件を満たす」といった条件式を指定したい時です。その場合は論理演算子を利用することで複数の条件式を組み合わせた条件式を作成することができます。

演算子 説明
条件式1 && 条件式2 条件1と条件2の両方が成り立てばtrue、一方でも成り立たなければfalse
条件式1 || 条件式2 条件1と条件2の一方が成り立てばtrue、両方とも成り立たなければfalse

それぞれの構文は次のようになります。

if 条件式1 && 条件式2 {
    条件式1と条件式2が成り立った場合の処理を記述
}
if 条件式1 || 条件式2  {
    条件式1と条件式2のいずれかが成り立った場合の処理を記述
}

また、「ある数が10以上かつ20以下ではない」という否定条件を指定したい時にも論理演算子を利用します。

演算子 説明
!条件式 条件がtrueであればfalseになり、条件がfalseであればtrueになる

論理演算子&&と!を使用した例が以下です。

var num1=15
if num1 >= 10 && num1 <= 20{
    print("num1は10以上、20以下である")
}

var num2=5
if !(num2 >= 10 && num2 <= 20) {
    print("num2は10以上、20以下ではない")
}

//結果
//num1は10以上、20以下である
//num2は10以上、20以下ではない

変数num1は値が15であるため、num1が10以上かつ20以下という条件を満たすため、「num1は10以上、20以下である」という文字列がコンソールに出力されます。変数num2は値が5であるため、num2が10以上かつ20以下であるという条件を満たしません。しかし、論理演算子!が条件式に
ついているため、結果が反転(falseがtrueになる)します。この結果、「num2は10以上、20以下ではない」という文字列もコンソールに出力されます。

場合分け

条件に一致した場合だけでなく、条件に一致しなかった場合にも処理を記述したい場合、else句を利用します。if-else文の構文は次のようになります。

if 条件式 {
    条件式が成り立った場合の処理を記述
}else{
    条件式が成り立たなかった場合の処理を記述
}

if-else文の例は次の通りです。

var value = 20
if value < 10 {
    println("valueは10より小さい")
} else {
    println("valueは10以上")
}

//結果
//valueは10以上

この場合、if文の条件式「value < 10」を満たさず、結果はfalseになります。条件式の値がfalseになった時、else句のブロックに記述されている文が実行されますので「valueは10以上」という文字列がコンソールに出力されます。

if-else文は2つの場合分けでした。さらに3つ、4つと場合分けを増やしたい場合、else if句を追加します。if-else if-else文の構文は次の通りです。

if 条件式1 {
    条件式1が成り立った場合の処理を記述
}else if 条件式2{
    条件式2が成り立った場合の処理を記述
}else{
    条件式が成り立たなかった場合の処理を記述
}

ある変数の値を3パターンで場合分けした例を次に示します。

var num = 15
if num <= 10 {
    print("numは10以下である")
}else if num > 10 && num <= 20{
    print("numは10より大きくて20以下である")
} else {
    print("numは30以上")
}

//結果
//numは10より大きくて20以下である

この例では、numの値が10の場合、numの値が11から20の間の場合、numの値がそれ以外の場合の3通りで場合分けしています。このように、else if句を使うことで3つ以上の場合分けに対応した条件分岐を実現することができます。
なお、if-else if-else文においてelse句はオプションですので不要であれば、else句を削除してもかまいません。

var num = 15
if num <= 10 {
    print("numは10以下である")
}else if num > 10 && num <= 20{
    print("numは10より大きくて20以下である")
}