見出し画像

Swiftで行こう!--enum,protocol,classどれ使う?

ちょっと整理します。

enumは言語機能としてコンパイラによる網羅検査が提供されているということで自分でも検証してみます。

となってエラーが保管の指示が出ています。"Fix"してると、

補完の機能で

case .paa: 
code

が追加されまいした。検査機能が発揮されていますね。

classとprotocolでは、そのような網羅性の検査機能はありません。対策として、classとprotocolでも網羅検査をするための実装パターンがあるようです。

個別の型について

classとprotocolにおいては個別の型があります。
enumについてはcaseには型がありません。

ネームスペースについて

enumとclassは個別の値を共通の型の内部のネームスペースで宣言する事ができます。
protocolはできません。

ジェネリックについて

enumとclassはジェネリックパラメータを取る事ができます。
protocolはできません。

値型、参照型について

enumとprotocolは値型として扱われ、classは参照型です。
ただし、protocolの場合は、個別の型がclassで実装されていた場合、参照型です。

この記事が気に入ったらサポートをしてみませんか?