こんにちは!
今回は第1回目と2回目に投稿したif文とswitch文で、2つの制御構文の使い分けについてアウトプットしていこうと思います。
どちらも条件によって処理を分けることをしてくれますが、どのような場面で使い分ければいいか?いまいち理解しておりませんでしたので、今回はこちらを纏めていきまーす!
まず復習がてら2つの制御構文の説明を簡単に記載します。
if文
- switch文を用いて網羅的に条件分岐を記述できます
- 条件はどのデータ型(String型、Int型、Double型、enum型)でも指定が可能です
title.swift
var score: Int = 80
if score == 100 {
print("大変良くできました。")
} else if score >= 80 {
print("良くできました。")
} else if score >= 60 {
print("もう少し")
} else {
print("頑張りましょう")
}
switch文
- switch文を用いて網羅的に条件分岐を記述できます
- 条件はどのデータ型(String型、Int型、Double型、enum型)でも指定が可能です
title.swift
var score: Int = 80
switch score {
case 100:
print("大変良くできました。")
case 80...99:
print("良くできました。")
case 60...79:
print("もう少し")
default:
print("頑張りましょう")
}
使い分けについて
それでは本題である使い分けについて説明していきます。
ケースバイケースでどちらの利用するか選択しますが、今日はしっかり使い分けの観点を押さえておきます。
下記のサンプルコードを加えて少し詳しく説明します。
title.swift
// if文
let fruit = "りんご"
if fruit == "りんご" {
print("りんごを食べる")
} else if fruit == "みかん" {
print("みかんを食べる")
} else if fruit == "ぶどう" {
print("ぶどうを食べる")
} else {
print("その他の果物を食べる")
}
// switch文
let fruit = "りんご"
switch fruit {
case "りんご":
print("りんごを食べる")
case "みかん":
print("みかんを食べる")
case "ぶどう":
print("ぶどうを食べる")
default:
print("その他の果物を食べる")
}
この例では、果物の状態を確認して、対応する行動(「りんごを食べる」など)を表示しています。
その1:網羅的に条件分岐を行う必要があるとき。
この場合は、switch文を利用することを推奨してます。
何故ならif else
を使用した場合、どの条件にも一致せず処理がスルーされてしまうことがあります。
その反面 switch
であれば最後にdefault
を設定する必要があるため、網羅的に条件分岐を行うことができます。
- if-else文では、果物が「りんご」か「みかん」か「ぶどう」かを順番に確認しています。もし新しい果物が出てきた場合、何もしないで処理が進んでしまうことがあります
対照的に、switch文では果物の状態を一度確認し、それに対応する行動を見つけるのが簡単です。そして、defaultの部分には「その他の果物を食べる」という処理が書かれているので、新しい果物が追加されても対応がしやすいです。
その2:評価条件が多い場合
3つ以上の可能性がある状態について同じ値を確認したい場合は、可読性の観点からif else
よりもswitch
を推奨してます。
異なる条件を多く記載するより、その値を繰り返しチェックしていることが明確になるからです。
- if-else文では、果物が「りんご」か「みかん」か「ぶどう」かを順番に確認しています。対照的に、switch文では果物の状態を一度確認し、それに対応する行動を見つけるのが簡単です。どちらも同じ結果を得られますが、switch文の方がコードを短く、可読性が高くできます
まとめ
今回はif文とswitch文の使い分けについて説明させて頂きました。
ケースバイケースで使い分けられるように理解しておく必要はありますね。
それではまた!