0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

associatedtype swift

Last updated at Posted at 2021-10-15

謎のワードだったassociatedtypeを調べてみた。

 associatedtypeキーワードでプロトコルの連想型を定義することができる。
通常であればプロトコルを宣言した際に引数や戻り値の型を指定する必要があると思うが、associatedTypeを指定するとデリゲートした際に
型を指定することができる。
連想型を使用指定していけば、より抽象的なプロトコルを定義できる。

書き方

protocol プロトコル  {
 associatedType 連想型名
 var プロパティ名:連想型
 func メソッド名(引数連想型名)
 func メソッド名()→連想型名
}

連想型の実際の型は、プロトコルにdelegateする型ごとに指定できる。
準拠側

1 typeliasで指定
 typelias 連想型名 = Int
2 実装から自動的に決めることもできる
 var プロパティ名 :Int
 func メソッド名(引数:Int)
 func メソッド名()Int {return 3}
3.型を定義せずに再度ネストする形で要求を満たすことも可能である
 struct 連想型名()
 var プロパティ名 :連想型名
 func 引数:連想型名{}
func  ()連想型名{}

 型の制約 
連想型とはいえ準拠しなくてはならないプロトコル、継承していて欲しいスーパークラスがある場合は下記のように指定する
指定したプロトコルに準拠、もしくはスーパークラスを継承していない場合はコンパイルエラーになってしまう。

 associatedType 連想型名 :プロトコルやスーパークラス
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?