enumのAssociated Valueを使いこなす
あけましておめでとうございます。今年もよろしくお願いします。
Twitterでもお知らせしたのですが、開業しました。個人事業主です。
https://twitter.com/NNkamura/status/1203912766563553280
屋号は「モバイルアプリツクール」です。ちょっとダサくて分かりやすいネーミングが気に入っています。
本ブログが1ヶ月ほど止まってしまったのは、出向先の現場が変わったり、副業を始めたり、開業したりとバタついていたためです。その辺の近況報告はそのうち。
今回はenumのAssociate Valueについてです。
結論から言うと「enumは色んな型をまとめられるし、メソッドも入れれるよ」という話です。
本記事は以下の記事を参考に…といいますか、以下の記事を噛み砕いたものになります。サンプルコードもほとんど引用させていただきました。
https://academy.realm.io/jp/posts/david-east-simplifying-login-swift-enums/
自分のサンプルコードも貼っておきます。コピペしたい際はどうぞ。
https://github.com/NNkamura/Practice_enum_AssociatedValue
読んでの通りなのですが、enumです。
「enum LoginProviderStr: String」
といった具合に型を宣言するのは馴染みある形かと思います。
次に、複数の型を使ったenumです。
enum LoginProviderAssociatedValue
では様々な型が使われていますね。このようなことも可能です。
今回はログイン画面というシチュエーションなので、ログイン処理の事前準備をしている状態です。
続きまして、このデータセットを使うときの例です。
switchと case let にご注目ください。
このように分岐して処理を進めることができます。
しかし、switch文はかなり長くなってしまいますね。他にも複数処理があると可読性が下がってしまいます。
enumに依存する処理であれば、そのenumに内包させたいですよね。そんなとき、enumの中にfunctionを入れてしまうことができます。
前の画像でやったswitch文の分岐とやっていることはほとんど変わりません。
これでスッキリ、1行(88行目参照)でまとめることができました。
というわけで、以上になります。
あとがき
2020年初ブログなので、今年上半期の抱負でも書きましょう。
2019年は色々やりました。案件が変わったり、副業を始めたり、本ブログを始めたり、エンジニア勉強会にいくようになったり。
というわけで、それらを地道に、着実に続けることが今年上半期の目標です。
ちなみに下半期はAndroid開発者になることを考えています。屋号が「モバイルアプリツクール」ですからね、Androidもできるようにならなければ。
あと、ダイエットです。一番大事かもです。