Swiftのオプショナル型とアンラップが個人的に便利だなと思ったのでまとめたいと思います。
オプショナル型
そもそもオプショナル型とはなんぞやということですが、
簡単に言うと「nilを許容するデータの型」のことです。
以下のように変数の宣言時にデータ型の後ろに「?」をつけることでその変数をオプショナル型に出来ます。
var num: Int?
ちなみに普通に宣言した場合のものは非オプショナル型と言われたりもします。
オプショナル型の何が便利なのかというと「nilによるエラーを回避できる」ところです。
以下のようにコードを書くと通常ではエラーになってしまいますが、オプショナル型ではそれを回避できます。
もし仮に変数にnilが入ってしまった場合でもプログラムが止まることはなく処理を続行してくれます。
そのため、nilのせいで意図せずプログラムが終了してしまうことを防ぐことができます。
var num: Int?
print(num)
アンラップ
実は、オプショナル型の変数はそのままでは使用することができません。
以下のコードを実行すると…
var num: Int?
num = 1
print(num)
このような結果になってしまいます。
Optional(1)
そのため、オプショナル型をプログラムで使う場合には処理をしてあげる必要があります。
その処理のことを「アンラップ」といいます。
アンラップの方法は大きく分けて2種類あります。
if let 〜 / guard let 〜
一つ目の方法は、以下のように「if / guard」の条件の部分でletによる変数宣言を行い成功時には処理を続行する方法です
var num: Int?
num = 1
if let unwrapnum = num {
print(unwrapnum)
}
結果は以下のようになります。
1
強制アンラップ
もう一つの方法は、以下のように変数に「!」をつけることでnilチェックを行わずにアンラップする方法です。
var num: Int?
num = 1
print(num!)
結果は以下のようになります。
1
ただし、nilの場合に強制アンラップを行うとエラーになってしまうため、
強制アンラップは値がnilでないことが確信できる場合のみにしか使ってはいけません。
まとめ
既に他の方も同じような記事を書いてはいましたが、自分が今回学んだこととしてアウトプットさせていただきました。
そのため、他の記事と内容が被っている点などは目を瞑っていただけるとありがたいです。
参考文献
SwiftUI対応 たった2日でマスターできるiPhoneアプリ開発集中講座 Xcode 12/iOS 14
OptionalをUnwrapする3つの方法