enumのAssociated Valueを使いこなす

あけましておめでとうございます。今年もよろしくお願いします。

 

 

Twitterでもお知らせしたのですが、開業しました。個人事業主です。

https://twitter.com/NNkamura/status/1203912766563553280

屋号は「モバイルアプリツクール」です。ちょっとダサくて分かりやすいネーミングが気に入っています。

 

本ブログが1ヶ月ほど止まってしまったのは、出向先の現場が変わったり、副業を始めたり、開業したりとバタついていたためです。その辺の近況報告はそのうち。

 

今回はenumAssociate Valueについてです。

 

結論から言うと「enumは色んな型をまとめられるし、メソッドも入れれるよ」という話です。

 

 

 

本記事は以下の記事を参考に…といいますか、以下の記事を噛み砕いたものになります。サンプルコードもほとんど引用させていただきました。

https://academy.realm.io/jp/posts/david-east-simplifying-login-swift-enums/

 

自分のサンプルコードも貼っておきます。コピペしたい際はどうぞ。

https://github.com/NNkamura/Practice_enum_AssociatedValue

f:id:NNkamura_Enginieer:20200102003001p:plain

普通のenumです

読んでの通りなのですが、enumです。

enum LoginProviderStr: String

といった具合に型を宣言するのは馴染みある形かと思います。

 

 

次に、複数の型を使ったenumです。

f:id:NNkamura_Enginieer:20200102003115p:plain

enum「LoginProviderAssociatedValue」にて、色んな型を使っています


enum LoginProviderAssociatedValue

では様々な型が使われていますね。このようなことも可能です。

今回はログイン画面というシチュエーションなので、ログイン処理の事前準備をしている状態です。

 

 

続きまして、このデータセットを使うときの例です。

switchと case let にご注目ください。

f:id:NNkamura_Enginieer:20200102003824p:plain

"facebookUser"はswitchで分岐ができ、letで使うことができます

このように分岐して処理を進めることができます。

 

しかし、switch文はかなり長くなってしまいますね。他にも複数処理があると可読性が下がってしまいます。

enumに依存する処理であれば、そのenumに内包させたいですよね。そんなとき、enumの中にfunctionを入れてしまうことができます。

f:id:NNkamura_Enginieer:20200102005310p:plain

enumの中にlogin処理を入れる

前の画像でやったswitch文の分岐とやっていることはほとんど変わりません。

これでスッキリ、1行(88行目参照)でまとめることができました。

 

 

というわけで、以上になります。

 

 

 

あとがき

2020年初ブログなので、今年上半期の抱負でも書きましょう。

2019年は色々やりました。案件が変わったり、副業を始めたり、本ブログを始めたり、エンジニア勉強会にいくようになったり。

というわけで、それらを地道に、着実に続けることが今年上半期の目標です。

ちなみに下半期はAndroid開発者になることを考えています。屋号が「モバイルアプリツクール」ですからね、Androidもできるようにならなければ。

 

あと、ダイエットです。一番大事かもです。