前回はオプショナル型と非オプショナル型の違いについて説明しました。
今回は、前回の続きとしてオプショナル型から非オプショナル型へアンラップする方法について説明していきます。
前回の記事はこちら

アンラップの方法
アンラップの方法を3つに分けて紹介します。
強制的アンラップ(Forced Unwrapping)
前回紹介した通り、一般的なオプショナル型は?を使った宣言によるものですが、!を使うことによって強制的にオプショナル型を非オプショナル型へアンラップできます。
// 強制的アンラップ var number: Int = 5 print(number!) // ちなみに前回学んだ暗黙的アンラップ var number: Int! = 5 print(nuumber)
オプショナル型を強制的にアンラップする操作であるため、オプショナルがnilであれば当然エラーとなります。
ちなみに前回の暗黙的アンラップとは違うもので、強制的アンラップは操作(printという出力操作)の中で行われるアンラップとして位置づけられるのに対し、暗黙的アンラップは宣言の中で行われるアンラップとして位置づけられます。
オプショナルバインディング(Optional Binding)
let optionalString: String? = "hello" if let normalString = optionalString { normalString = normalString.uppercaseString }
このコードの if let にあたる部分がオプショナルバインディングです。
右辺のコード(optionalString)が nil でなければ、アンラップされた型の変数(normalString)に格納された後、その変数を使うことによってアンラップされた型を使用することができます。
気を付けなければならないことは、一つネストが深くなるため、Optional を参照するときにこの方法を使うようにとすると、ネストが深くなるだけの長いコードが生まれます。
なので、他の方法が使えないか考えた上で使いましょう。
オプショナルチェイニング(Optional Chaining)
オプショナル型のオブジェクトを使う場合に、nilかどうかをチェックしてくれるものです。
チェックをするのみではアンラップできないので、オプショナルバインディングと併せて利用されることが多いです。
そうすることによって、もしnilの場合はnilを返し、nilでない場合はアンラップして非オプショナル型を返してくれるようになります。
let optionalStr: String? = "HEllO" if let str = optionalStr?.lowercased() { print(str) } // 結果 HELLO(非オプショナル型)
以上の三つがアンラップの方法となります。
次はasを使ったキャストの方法について紹介していきたいと思います。
独学での勉強に限界を感じたら、プログラミングスクールに通うという手もあります。
<Udemy>
管理人が勤務している大手会計事務所でも導入されており、その他ソフトバンクなど超大手企業でも導入されているオンライン学習サービスです。
<Tech Academy>
最短4週間で未経験からプロを育てるオンライン学習サービス。
分からないことは現役プロの講師に直接質問ができます。
<Tech Camp>
将来的にエンジニアとして自由に働きたいという方にオススメ。
就職活動の支援までしてくれるオンライン学習サービスです。
<Aidemy>
3か月集中講座でAIを使ったアプリ(VR/ARなど)が作れるように一気通貫してサポートする学習サービス。
画像認識を使ったアプリ開発に興味がある方はオススメです。
コメント
いつも勉強になります!
ありがとうございます!
いえいえ、これからもよろしくお願いします。