1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

guard文について理解しよう!

Posted at

今回は、guard文について学習したので、アウトプットしていきます
※以下の内容は、学習内容のアウトプット用のため、誤りがある場合があります。予めご了承ください。

guard文とは?

guard文を一言でいうと、条件不成立のときに早期退出を行なうための条件分岐文。
基本的な書き方は以下の通りです。

qiita.rbvar
guard 条件式 else{

条件式がfalseの場合に実行される文
guard文が記述されているスコープ外に退出する必要がある
(つまりreturnを記述する必要がある)
}

※{}←スコープ
では、基本的な例を見ていきましょう!

qiita.rbvar


では基本的な例を見ていきましょう

func someFunction(){
let value = 99

guard value >= 100 else{
print("100未満の値です")//値が100未満だったので実行される
return
}

someFunction()
実行結果:100未満の値です

guard文で宣言された変数や定数へのアクセス

guard文は、if文と同様にguard-let文が利用できます。

if文を復習したい人は下記のURLをチェック!!
if文とは?("https://qiita.com/syunta061689/items/65d54a58936a5849a67a")

if-let文との違いは、guard-let文で宣言された変数や定数はguard-let文以降でも利用可能ということです。

次の例ではguard-let文で宣言した定数intにアクセスしています。

qiita.rbvar
func someFunction(){
let a: Any = 1 //Any型

guard let int= a as? Int //aをInt型にダウンキャストできますか?

else{//そうでないなら以下を実行してください

print("aはInt型ではありません")
return
}

print("値はInt型の\(int)です")//intはguard文以降でも使用可能!
}
someFunction()

実行結果:値はInt型の1です

if文との使い分け

では、今度は具体的な例を用いて、if文との使い分けを深堀りしていきましょう.
次の例では、if文とguard文で、2つのInt型を受け取り、両方の値を持っていればその和を返し、どちらかが値を持っていなければnilを返すという処理をしていきます。

if文の例

qiita.rbvar
func add(_ optionalA: Int?,_ optionalB: Int?)-> Int?{

let a: Int      
if let unwrappedA = optionalA{ 

a = unwrappedA

}else{
print("第一引数に値が入っていません")
return nil

}
let b: Int
if let unwrappedB = optionalB{

 b = unwrappedB

}else{
print("第引数に値が入っていません")
return nil

}

return a+b 

}

add(optional(3)optional(2))//5

guard文の例

qiita.rbvar
func add(_ optionalA: Int?, _ optionalB: Int?)-> Int?{

       

    guard let a = optionalA else{
    print("第1引数に値が入っていません")
    return nil

    }
        
        
        
    guard let b = optionalB else{
    print("第2引数に値が入っていません")
    return nil

    }

    return a+b
        
        
    }

    add(Optional(3),Optional(2))//5

このように、条件に応じて早期退出するコードは、 guard文を使用して実装した方がシンプルとなります
また、guard文では退出処理を書き忘れた場合にエラーになるため、単純ミスを未然に防げます!

1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?