はじめに
最初は「条件分岐ってif文のことでしょ?」となめていたら、意外と色んな種類があり、「コード上ではよくみるけど、そういう意味、目的だったのか!」ていうのもあったので、今回はswiftの条件分岐についてまとめていこうと思います!
条件分岐の種類
- if文
- guard文
- switch文
- 三項条件演算子
- Nil Coalescing演算子
if文
これは条件分岐の基本中の基本ですね!
if 条件式{
処理
}else{
処理
}
Swiftの場合はオプショナル変数をアンラップするためにnilチェックをよく行います。
//if文のnilチェック
var str: String!
if let str: String = str {
//出力されない
print(str)
}
var str2 = "Hello, World! "
if let str2:String = str2{
//出力される
print(str2)
}
if文のPoint!
Nilチェック、アンラップにif文もよく使われる
guard文
guard文は、エラーであれば早々に処理を行わないようにする「早期リターン」として使われます!
//guard文
func printNumber(_ num:Int){
guard num>0 else {
return
}
print(num)
}
printNumber(-1)
printNumber(0)
printNumber(5)
guard文のPoint!
・早期リターンでNilチェックとアンラップを同時に行える!
・elseとセット
・return か throwを必ず使用しなければならない
・guard文で定義した変数はguard文を抜けた後でも使用可能
出力
5
switch文
switch文はif文と異なり、全ての条件を網羅する必要があります。
var str = ""
//print(str)!
let test = "a"
//ノーマル
//break するためにbreakを書く必要がない
switch test {
case "a":
print("正解!")
default:
print("やったね!")
}
//出力「正解!」
//Fallthrough
switch test {
case "a":
str += "case1:"
fallthrough
default:
str += "fallthroughしました!"
print(str)
}
//出力「case1:fallthroughしました!」
// MARK: - 様々な型に対応してる
//例1:double型
let double = 2.5
switch double {
case 0..<5:
print("Double型の例")
default:
print("default")
}
//出力「Double型の例」
//例2:enum
enum Study {
case A, B, C
}
//呼び出しかた
var math: Study
math = Study.A
math = .B //型が分かっている場合はenum名は省略できる
switch math{
case .A:
print("Aだよ")
case .B:
print("Bだよ")
case .C:
print("Cだよ")
}
//出力「Bだよ」
三項条件演算子
条件分岐と似た手法です!
書き方
条件式 ? trueの場合 : falseの場合
//三項条件演算子
var testBool:Bool = true
var result1 = testBool ? "trueだよ" : "falseだよ"
print(result1)
//出力
trueだよ
Nil Coalescing演算子
「??」を使うことにより、nilかどうかをチェックすることができます!
nilだった場合は、helloに"Nil Coalescing"が代入されます!
// Nil Coalescing演算子
let nilStr:String? = nil
let hello: String = nilStr ?? "Nil Coalescing"
print(hello)
//出力
Nil Coalescing