【Swift】associatedtypeとは?プロトコルへのジェネリックプログラミング

この記事からわかること
- Swiftのassociatedtypeとは?
- プロトコルでのジェネリクスプログラミング
- ジェネリクスとの違い
- 型への依存を下げるには?
\ アプリをリリースしました /
associatedtypeキーワードとは?
Swiftのassociatedtype
キーワードはプロトコルで使用するジェネリック(具体的な型に依存しない)な型制約を定義するためのキーワードです。「associated
」は日本語で「関連する」という意味を持つ英単語です。
Swiftではジェネリックプログラミングに対応するためのジェネリクスという仕様が用意されています。ジェネリクスを使用することで特定の型に依存しない関数や構造体などを定義することができるようになります。一時的な型名としてT
が使用されることが多いです。
それをプロトコルでも実装するために使用するキーワードがassociatedtype
キーワードのようです。
使われている場所
associatedtype
はSwiftにあらかじめ定義されているさまざまなプロトコルで利用されておりSwift UIの要であるView
プロトコルにも利用されています。
見てみるとBody
型がassociatedtype
が定義されています。Body
型に関してはBody : View
となっているので最低限View
プロトコルに準拠している必要があります。
実際に使用してみる
プロトコル内で使用できるジェネリックな型を定義できるので、プロパティやメソッドとは異なり、以下のようにassociatedtype
キーワードを使って定義します。定義した型はプロトコル内のプロパティやメソッドで使用できるようになります。
ご覧いただきありがとうございました。