【Swift】if文を使って条件分岐の処理を行う!
条件分岐はプログラミングで最も重要な制御で、この制御がないものは見たことがありません。
例えば、スマホアプリである「パズドラ」にも条件分岐の処理が使用されています。
パズドラは同じ属性3つをつなげたら攻撃ができるようになりますが、「同じ属性のを3つ繋げる」という条件を設定し、その条件を満たしているなら「攻撃する」という処理がコードに組み込まれています。
また、一定のターンが過ぎると必殺技が使用できますが、こちらも「nターン過ぎたら」という条件を設定し、その条件を満たしているなら「必殺技を使用できる」という処理もコードに組み込まれています。
つまり、if文などのような条件分岐を使用することによって、プログラムの機能の幅を広げることができます。
しかし、条件分岐の処理を行う構文はif文だけではなくswitch文もありますので、それぞれを使い分けていくようにしましょう。
今回はSwiftのif文を使って条件分岐の処理を行う方法について以下の内容で解説していきます。
⚫︎ ifのみを使用して条件分岐を行う場合
⚫︎ if elseを使用して条件分岐を行う場合
⚫︎ else ifを使用して条件分岐を行う場合
⚫︎ if文の実際の使用例
⚫︎ if文の実際の使用例
⚫︎ switch文
目次
条件分岐とは
条件分岐とは条件式によって処理が分岐するということです。
条件が満たされていないと処理を実行できないパターンもあれば、条件が満たされている場合に実行する処理と、満たされていない場合に実行する処理に分岐させるパターンにも設定することができます。
そして、条件分岐は「Yes」と「No」の2通りだけでなく、3通りや4通りなどたくさんの条件を指定できることから複数の条件を設定することもできます。
if文とは
if文とは条件に一致した時のみ処理を行う文法になります。
条件文の王道とも言われる構文となります。
if文の書き方
if文の書き方は下記となります。
1 2 3 |
if (条件式) { // 条件式がtrueの場合に行う文 } |
条件式はtrueかfalseのブール値で判断され、条件式がtrueだった場合、if内(括弧内)の処理が実行され、条件式がfalseだった場合、if内の処理は実行されずスキップされます。
続いて、if elseの構文は下記となります。
1 2 3 4 5 6 |
if (条件式) { // 条件式がtrueの場合に行う文 } else { // 条件式がfalseの場合に行う文 } |
条件式がtrueだった場合、if内の処理が実行されますが、条件式がfalseだった場合、else内の処理が実行されます。
また、else ifの構文は下記となります。
1 2 3 4 5 6 7 8 9 |
if (条件式1) { // 条件式1がtrueの場合に行う文 } else if(条件式2) { // 条件式1がfalseで条件式2がtrueの場合に行う文 } else { // 条件式2がfalseの場合に行う文 } |
条件式1がtrueだった場合、if内の処理が実行されますが、条件式1がfalseで条件式2がtrueだった場合else if内の処理が実行されます。
そして、条件式2がfalseだった場合else内の処理が実行されます。
if文を使用する際の注意点
⚫︎ ネストになりすぎないようにする
if文を使いすぎると、if文の中にif文がある状態(ネスト)が発生します。
1つ、2つ使用する上では問題ないのですが、5つや6つ使用するとどこの条件を通るのか分かりにくくなりソースコードが非常に読みにくくなります。
その為、「ネストは3つ」などのように、決まりを意識してコード書くようにしていきましょう。
if文を使ったサンプルコード
ifのみを使用して条件分岐を行う場合
ifのみを使用して条件分岐を行う場合をみてみます。
例
1 2 3 4 5 |
let num = 20 if num == 20 { print("numの値は20") } |
出力結果
numの値は20
ここで条件式はnumの値が20であるかどうかを判断しています。
numの値は20である為、条件式はtrueとなります。
したがって、if文の括弧内の処理が実行されます。
if elseを使用して条件分岐を行う場合
if elseを使用して条件分岐を行う場合をみてみます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
let num1 = 50 let num2 = 14 if num1 > 15 { print("num1の値は15より大きい") } else { print("num1の値は15より小さい") } if num2 > 15 { print("num2の値は15より大きい") } else { print("num2の値は15より小さい") } |
出力結果
num1の値は15より大きい
num2の値は15より小さい
num1は15より大きい(num1 > 15)かどうかを確認しており、num1は15ですのでtrueを返します。
そして、num2も15より大きい(num2 > 15)かどうかを確認していますが、num2は14ですのでfalseを返します。
したがって、num1はifの括弧内の処理が実行され、num2はelseの括弧内の処理が実行されます。
else ifを使用して条件分岐を行う場合
else ifを使用して条件分岐を行う場合をみてみます。
例
1 2 3 4 5 6 7 8 9 10 11 |
let num = 25 if num < 15 { print("numの値は15より小さい") } else if num < 50 { print("numの値は50より小さい") } else { print("numの値は50以上の値である") } |
出力結果
numの値は50より小さい
numは15より小さい(num < 15)かどうかを判断し、そしてそれがfalseであるならnumは50よりも小さい(num < 50)かどうかを確認します。
ここで、numは25ですので、一つ目の条件式はfalseであり、二つ目の条件式は trueになります。
したがって、else ifの括弧内の処理が実行されます。
if文の実際の使用例
条件による処理の分岐
条件による処理の分岐をする際にif文は使用されています。
こちらは見たことがあるかと思いますが、一応紹介しておきます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
func action(ball: String) { if ball == "baseball" { print("野球ボールを打つ") } else if ball == "soccer" { print("サッカーボールを蹴る") } else if ball == "tennisball"{ print("テニスボールを打つ") } } action(ball: "soccer") action(ball: "baseball") action(ball: "tennisball") |
出力結果
サッカーボールを蹴る
野球ボールを打つ
テニスボールを打つ
変数の値次第によって処理の内容を変更しています。
変数チェック
変数チェックを行う際に条件式は使用されます。
条件式に入る前にまず、条件となる変数の中身が空になっていないかどうか確認する必要があります。
もし、空の状態で処理が行われると、バグになってしまうことがあるので空の場合は処理を行わないようif文で変数チェックを行いましょう。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
func check(money: Int?) { if let money = money { let str_money = String(money) print(str_money + "円あります。") } else { print("moneyの中身は空の為処理を終了する") } } var money : Int? check(money: money) check(money: 6000) |
出力結果
moneyの中身は空の為処理を終了する
6000円あります。
if文を使用することで変数チェックを行っています。
その為、変数がからの場合は処理を終了し、変数に値が入っていると処理が行われています。
また、Swiftにはguard文というチェックのための専門構文があり、変数チェックを明示的に記述することができ、guard文以降の処理は変数の内容が保証されている状態で行うことができます。
例
1 2 3 4 5 6 7 8 9 10 11 12 |
func check(money: Int?) { guard let money = money else { return } let str_money = String(money) print(str_money + "円あります。") } var money : Int? check(money: money) check(money: 3000) |
出力結果
3000円あります。
変数が空の場合は、elseの括弧内を通って処理が終了するのでif文と比べて分かりやすいです。
if文を三項演算子で書く場合
また、if文は三項演算子を使用して書くことができます。
三項演算子を使用することでif文を1行にまとめて記述することができます。
例
1 2 3 |
let result = num == 25 ? "numの値は25です。" : "numの値は25ではありません。" print(result) |
出力結果
numの値は25です。
三項演算子を使ってif文を1行にまとめて作成しています。
1行でかけるのでとても便利だと思いがちですが三項演算子を用いる場合は、if文と同じようには使えず、ある値を返したい場合にのみ使うことができますので注意してください。
switch文
switch文とはif文と同じ条件文になりますが、多数の条件分岐を行う際にとても便利な構文になります。
if文で多数の条件分岐を行う場合は、else ifをつなげて記述していくかもしれませんが、それらはswitch文一つで実現することができます。
例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
func select(fruits: String) { switch fruits { case "orange": print("オレンジを選びました。") case "strawberry": print("いちごを選びました。") case "apple": print("りんごを選びました。") case "pineapple": print("パイナップルを選びました。") case "grape": print("ぶどうを選びました。") default: print(fruits + "は対象外です。") } } select(fruits: "orange") select(fruits: "apple") select(fruits: "durian") |
出力結果
オレンジを選びました。
りんごを選びました。
durianは対象外です。
switch文によっての条件分岐の処理を行っています。
多数の条件分岐の処理がありますが、switch文で書くととても分かりやすいです。
そのため、多数の条件分岐の処理がある場合はidf文ではなくswitch文で書くようにしましょう。
今回のポイント
if文で条件分岐の処理を行う
⚫︎ if文の注意点として、ネストしすぎないようにする
⚫︎ ifのみを使用する場合、bool値がtrueの場合、処理が実行され、falseの場合、処理をスルーする
⚫︎ if elseを使用する場合、bool値がtrue場合、ifの括弧内の処理が実行され、falseの場合、elseの括弧内の処理が実行される
⚫︎ else ifを使用する場合、bool値がtrue場合、ifの括弧内の処理が実行され、falseの場合、esle ifの条件式が判断される
⚫︎ else ifの条件式がtrueの場合、else ifの括弧内の処理が実行され、falseの場合、elseの括弧内の処理が実行される
⚫︎ if文の実際の使用例として、条件による処理の分や変数チェックがある
(Swiftには変数チェックの専門構文であるguard文がある)
⚫︎ if文は三項演算子を使用して書くことも可能
(ある値を返したい場合にのみ使うことができる)
⚫︎ 多数の条件分岐を行う際にはswitch文を使用する
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。