もくもく独書 とは
Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
- 作者: 石川洋資,西山勇世
- 出版社/メーカー: 技術評論社
- 発売日: 2017/02/07
- メディア: 単行本(ソフトカバー)
- この商品を含むブログ (4件) を見る
上記の Swift実践入門を読みながら、思った事をTweetしていく取り組みです。
Swiftをはじめから丁寧にやっていきます。 なるべく毎日更新を目標にする。
リンク
前回:
次回:
今日の取り組み
今日もやってくぞー。今日は第七章「プロトコル」について。#もくもく独書
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
そもそもプロトコルとはなんぞや?って話。
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
プロトコルは型のインターフェイスを定義するものでざっくり言って 型がどのようなプロパティ・メソッドを持っているかを示すもの、って認識。
プロトコルのインターフェイスを型が満たしている状態を "プロトコルに準拠"しているという。#もくもく独書
プロトコルを利用するメリットとして複数の型で共通の仕様(メソッド・プロパティ)を抽象化して持つことができるというのがある。
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
例として Equableプロトコルがあるが、これは == 演算子があり、これに準拠しさえすれば、等価比較ができる、というような性質を持つことになる。
#もくもく独書
プロトコルの定義としては以下の画像のような感じで今回は構造体を例にとって示している。
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
struct が プロトコルに準拠していない (プロトコルで指定されたインターフェイスを満たしていない)場合は、コンパイルエラーとなる。pic.twitter.com/2QMeXw0TWP#もくもく独書
プロトコルを構成する要素としてまず最初にプロパティがある。
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
プロトコル上でプロパティが定義されている場合は 変数または定数のストアドプロパティ、もしくは ゲッタを持つコンピューティッドプロパティを定義する必要がある。
コンピューティッドプロパティでもいいんだねー。#もくもく独書
ただし、プロパティの場合は getter 及び setter を定義する必要がある、と指定されている場合がある。
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
この場合は ストアドプロパティの変数 、 もしくは コンピューティッドプロパティに getter および setter を指定する必要がある。pic.twitter.com/fm7WVQLzla#もくもく独書
メソッドの場合はメソッド名・引数の型、戻り値の型を定義しておき、準拠させる型上でそれらを実装する必要がある。pic.twitter.com/G0Fb99wtH1#もくもく独書
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
また、プロトコルにはクラス専用のプロトコルを定義する事ができる
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
これは、プロトコルを準拠する型について 参照型である事をしばりたい場合等に用いたりする。 例えば、デリゲートパターンなどがこれにあたる。pic.twitter.com/7Yj1RofP9P#もくもく独書
また、プロトコルにはプロトコルに対して実装を追加する プロトコルエクステンションを定義する事もできる。 画像では、 Blogプロトコルに準拠している ProgrammingBlog 型で extension をよみこむ事で descripton プロパティを参照できている。pic.twitter.com/LmKe2lEYF8#もくもく独書
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
このプロトコルエクステンションでは、型制約を追加する事ができ、この条件を満たす場合のみプロトコルエクステンションを有効にしたりもできる。pic.twitter.com/0OflcrVLXi#もくもく独書
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
最後に 標準ライブラリのプロトコル例について
— イルカ@JPUG & 岡山swift (@ikkitang) 2018年6月5日
comparable とか、 Equabale とか を例にして第七章を終了。
Swiftの型を理解するにあたって非常に重要な項目だと思うのでしっかり理解したいね。 extension プロトコルは非常に協力だし楽だな、って思ったので是非使っていきたい。#もくもく独書
Swift実践入門について
今はSwift4対応の改訂版出てるのでそっち読んだほうがいいよ。多分。
[改訂新版]Swift実践入門 ── 直感的な文法と安全性を兼ね備えた言語 (WEB+DB PRESS plus)
- 作者: 石川洋資,西山勇世
- 出版社/メーカー: 技術評論社
- 発売日: 2018/01/17
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る