このページに訪れていただきありがとうございます。
このページでは実務でswiftを触ることが増えてきたので、勉強の一貫でオプショナルバインディングをアウトプットしました。
目新しい情報はないのですが、最後までお読みいただけますと幸いです。
前提の知識
・swiftにはオプショナル型とそれ以外の形がある
・swiftにはnilという何もないという値がある。(null的な?)
・nilはオプショナル型にしか格納できない値
・オプショナル型に格納されている値を使用する場合はアンラップする必要がある。
・アンラップには強制的な方法と安全な方法がある。
・安全なアンラップがオプショナルバインディング
オプショナルバインディングとは
optional型の値を安全に取り出す方法
ifやguardを使って変数がnilでないことを確認して、処理をする方法です。
オプショナルバインディングの書き方
if を使った方法
var optionalNum:Int? = 1
if let num = optionalNum {
nilでないときの処理(numを使うことでアンラップされた状態として使用することができる)
} else {
nilのときの処理
}
guardを使った方法
var optionalNum:Int? = 1
guard let num = optionalNum else {
nilのときの処理
return
} これ以降がnil出ないときの処理を記述することができる。
ifとguardの違いとしては、ifはアンラップされた定数はifブロックの中でしか使用することができない。
一方でguard文では外でも使用することができる。
【関係知識】オプショナル型の宣言方法
var num : Optional<型> = 格納する値
var num:Int?
【関係知識】強制的なアンラップのやり方
オプショナル型の変数を取り出すときに!をつけることでアンラップすることができる。
var num:Int?
num = 1
var total = num! + 1
print(total) //2となる
なぜ強制的アンラップを注意しないといけないのか
強制的なアンラップはnilが入っていようがいないが強制的にアンラップするため、確実にnilが入っていないときのみ利用できる。
そのため、nilが入っていた場合はプログラムにエラーが出てしまう。
よくつかうのは@IBOutletで部品を宣言するときに使う印象
参考文献
https://mogi0506.com/swift-optional/
https://thinkit.co.jp/article/13489