[Swift] ダブルオプショナルな変数をアンラップする方法
こんにちは、@yoheiMuneです。
Swiftで実装していると時々、オプショナルが二重にかかった変数を扱う場面があります。それをどのようにアンラップするのかを、ブログに書きたいと思います。
最後になりますが本ブログでは、Swift、PHP、フロントエンド、Python、サーバー、インフラ、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!
Swiftで実装していると時々、オプショナルが二重にかかった変数を扱う場面があります。それをどのようにアンラップするのかを、ブログに書きたいと思います。
目次
ダブルオプショナルとは
以下のように、オプショナル型が2重に(またはそれ以上に)なっている状態です。let title: String?? = "Good News" print(title) // Optional(Optional("Good News"))これをアンラップしたいという、お話です。
方法1:Optional Binding を2回行う
二重にオプショナルがかかっている場合、オプショナルバインディング(if文)を2回使うことで、アンラップできます。if let title = title { if let title = title { print(title) } } // Good News基本動作の繰り返しですが、ちょっと面倒です。
方法2:キャスト検証を利用する
以下のように、キャストを利用すれば、1つのif文で検証することができます。if let title = title as? String { print(title) } // Good Newsこれは、実装コードも読みやすく分かりやすいので、良いと思います。
方法3:??演算子を使う
??演算子を用いて、以下のように実装することもできます。if let title = title ?? nil { print(title) } // Good Newsシンプルで個人的には好きですが、一見わかりづらいので、実践投入するかどうかは実装者次第ですかね〜。
最後に
今日はオプショナルの扱いのうち、オプショナルが二重になっている場合の扱いでした。最初に出くわした時にはどうしたらいいんだー!と思いましたが、調べてみるとスッキリしました。最後になりますが本ブログでは、Swift、PHP、フロントエンド、Python、サーバー、インフラ、Node.js、Java、Linux、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSやTwitterをフォローして貰えたら嬉しいです ^ ^
最後までご覧頂きましてありがとうございました!