この本は、Swift 言語のイニシャライザーを中心に広く見渡していく Swift 言語の入門書です。 イニシャライザーは、型からインスタンスを生成するときに使う初期化機構です。誰もが必ず使う機能で何気なく使っていますけれど、その機構は思ったよりも複雑です。嬉しいことに Swift 言語が上手に誘導してくれて何気なく正しく使うことができていますけれど、その役割や性質を知ったら、より適切にコードを設計できるようになるはずです。
対象読者
本書は Swift 言語の知識を深めたい人を対象としています。イニシャライザーの解説書ですけれど、イニシャライザーに特化した本ではないので、それを学びたい人だけに限らず、型ごとの特徴を知りたい人や、他の言語を習得した人が Swift 言語を学ぶきっかけとしても適切です。 イニシャライザーという題名からマニアックな印象を受ける人もいるかもしれないですけれど、基礎的なことを整理した言語としての入門書ですので、iOS アプリを作れるようになった人が「もう少し Swift 言語のことも知っておきたいけれど、どこから学ぼう」というステップアップのとっかかりとしても活用してもらえたら嬉しく思います。
得られる知識
本書では Swift 言語におけるイニシャライザーの基本的な書き方から、構造体やクラス型など型ごとのイニシャライザーの特徴と性格の違い、初期化できない場合の表現の仕方、リテラル変換とイニシャライザーの関係、オブジェクト指向やプロトコル指向や型拡張での扱いにおける留意点、初期化できない場合の表現の仕方など、イニシャライザーを起点に Swift 言語を広く眺める一冊になります。
目次
第1章 イニシャライザーの基本 1.1 基本書式 1.2 実装の基本 1.3 プロパティーを全て初期化する 1.4 引数ラベル名の付け方 1.5 returnは省略が基本 1.6 初期化が終わるまでの制約 1.7 初期化が終わるタイミング 第2章 構造体のイニシャライザー 2.1 特徴と種類 2.2 イニシャライザー 2.3 全項目イニシャライザー 2.4 構造体の既定イニシャライザー 2.5 型拡張とイニシャライザーの自動実装 2.6 初期値と全項目イニシャライザー 第3章 クラス型のイニシャライザー 3.1 特徴と種類 3.2 クラス型の既定イニシャライザー 3.3 指定イニシャライザー 3.4 便宜イニシャライザー 3.5 必須イニシャライザー 3.6 全ての指定イニシャライザーが揃うと⋯ 第4章 列挙型のイニシャライザー 4.1 特徴と種類 4.2 イニシャライザーを定義する 4.3 Raw 型を持つ列挙型のイニシャライザー 第5章 複合型のイニシャライザー 5.1 タプル型のイニシャライザー 5.2 イニシャライザーが存在しない? 5.3 複合型という存在 5.4 イニシャライザーは追加できない 5.5 公称型と構造型 5.6 関数型も複合型 第6章 初期化できない場合を考慮する 6.1 いくつかの考慮のしかた 6.2 型に不正な状態を持たせる方法 6.3 プログラムを強制終了する方法 6.4 エラーハンドリング機構で通知する方法 6.5 失敗可能イニシャライザーを使う方法 第7章 変換イニシャライザー 7.1 型変換 7.2 型変換の種類 7.3 値を保全する型変換 7.4 値の再解釈を伴う型変換 第8章 リテラル変換 8.1 リテラルとは 8.2 リテラル変換の仕組み 8.3 整数リテラルで表現可能な型を作る 8.4 文脈を踏まえて変換される 8.5 リテラルの既定の型 8.6 既定の型を差し替える 8.7 モジュールを越えた型の差し替え 8.8 互換性のない型に差し替えたとき 第9章 プロトコルでのイニシャライザー 9.1 プロトコルで実装を義務付ける 9.2 イニシャライザーは隠蔽できない 9.3 型拡張ではクラス型に適用できない 9.4 クラス型での使用を想定するなら 第10章 型拡張で定義する 10.1 型拡張とイニシャライザー 10.2 イニシャライザーの自動実装について 10.3 RawRepresentable による自動実装 10.4 構造体との親和性 10.5 クラス型で拡張できるイニシャライザー 10.6 プロトコルとクラス拡張