【Swift】if let と guard let とは
はじめに
「if」と「if let」って何が違うのか、イマイチ理解していなかったので、調べてみました。
開発環境
Swift (Version 5.3.2)
Xcode (Version 12.4)
MacBook Air (13-inch, 2019)
macOS Big Sur (version 11.2.3)
if letとは
変数の中身がnilかどうかを判定し、nil用の処理とnilでは無い(値が入っている)時の処理とを分けることができます。
① variableがnilの場合
var variable: String?
if let nilTest = variable {
print(nilTest)
} else {
print("変数はnilです") // こっちが実行される
}
// 変数はnilです
------------------------------------------
② variableがnilで無い場合
var variable: String?
variable = "値"
if let nilTest = variable {
print(nilTest) // こっちが実行される
} else {
print("変数はnilです")
}
// 値
上記の例では...
① 変数「variable」がnilの場合
variableがnilなので、if let文がスキップされ、else文が実行されます。
② 変数「variable」がnilで無い場合
variableに「値」というString型の値が代入されたので、if let文が実行されます。
variableの値が、nilTestに代入され、今回の例ではそれをprint(nilTest)
で出力しています。
guard letとは
変数の中身がnilかどうかを判定し、nilであればguard let以下の処理をスキップします。
① variableがnilの場合
var variable: String?
func nilTest() {
guard let _ = variable else {
print("変数はnilです") // こっちが実行される
return
}
print(variable!)
}
nilTest() // 変数はnilです
---------------------------------------------
② variableがnilで無い場合
var variable: String?
variable = "値"
func nilTest() {
guard let _ = variable else {
print("変数はnilです")
return
}
print(variable!) // こっちが実行される
}
nilTest() // 値
上記の例では...
① 変数「variable」がnilの場合
variableがnilなので、guard letが実行され、return文でguard let以下の処理は実行されません。
② 変数「variable」がnilで無い場合
variableに「値」というString型の値が代入されたので、guard let文はスキップされます。
強制アンラップされた変数variableをprint(variable!)
という形で実行しています。
guard let文のおかげで、変数がnilで無いことが保証されているので、安全に強制アンラップを行うことができます。
使い分け
if let
if letは、値がnilだった時の処理が必要な場合に使用しましょう。
guard let
guard letは、値がnilの場合にguard let以下の処理をスキップしたい場合に使用しましょう。
おわりに
使用頻度が多い記述方法ですので、覚えておいて損は無いです。
Author And Source
この問題について(【Swift】if let と guard let とは), 我々は、より多くの情報をここで見つけました https://qiita.com/okateru_0217/items/69aa0353718d2309074b著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .