2019/01/23更新

[Swift] ダブルオプショナルな変数をアンラップする方法

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
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、機械学習、などの技術トピックを発信をしていきます。「プログラミングで困ったその時の、解決の糸口に!」そんな目標でブログを書き続けています。ぜひ、本ブログのRSSTwitterをフォローして貰えたら嬉しいです ^ ^

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。