2014年07月30日
Posted by 屋台ブルー at
2014年07月30日00:00 Comment(0)
Swiftで遊ぼう! - 22 クラスの初期化は複雑なステップ
2015年8月12日:追記と改訂 -> Swiftであそぼう! on Hatena
クラスのイニシャライザーには、Designated Initializer(指定イニシャライザー)とConvenience Initializer(簡易イニシャライザー)があります。
もし正式な訳文を知っている人がいらっしゃれば教えてください。待ってまーすm(_ _)m
Designated Initializerとは「指定されたイニシャライザー」てところだろう。Convenience Initializerは「簡単なイニシャライザー」になるとする。
Classを宣言すると、インスタンスが作られるので、スーパークラスからイニシャライザーを継承するとしても、固有のイニシャライザーは必ず1つは存在することになる。イニシャライザーは「funnel」ポイントに落ちつく。このファンネルポイントも「漏斗状」というよりは、ファンネルポイントと言った方が格好いいような気がするが、正式な訳語は知らない。
イニシャライザーの繋がり
どのイニシャライザーに落ち着いていくのか、指定イニシャライザーと簡易イニシャライザーの関係性を単純化するために、Swift言語は次の3つのルールを提供している。
ルール1:指定イニシャライザーは、直属のスーパクラスにある指定イニシャライザーを呼ばなければならない。
ルール2:簡易イニシャライザーは、同クラスの他のイニシャライザー(指定、簡易どちれでも)を呼ばなければならない。
ルール3:簡易イニシャライザーは、最終的に指定イニシャライザーを呼ばなければならない。
このルールをふまえ、2段階の初期化ステップが組まれています。
1段階目で、プロパティに保持させる初期値を入れます。
2段階目で、クラスインスタンス生成時に、初期値のカスタマイズ(変更)を加えることができます。
更にセイフティーチェックポイントとして4つの説明が加えられています。
どういうわけかこのイニシャライザーのステップにルールや実行するステップが多い。多いと言うことは非常に重要なパートなんでしょう。
続きは明日にします。
クラスのイニシャライザーには、Designated Initializer(指定イニシャライザー)とConvenience Initializer(簡易イニシャライザー)があります。
もし正式な訳文を知っている人がいらっしゃれば教えてください。待ってまーすm(_ _)m
Designated Initializerとは「指定されたイニシャライザー」てところだろう。Convenience Initializerは「簡単なイニシャライザー」になるとする。
Classを宣言すると、インスタンスが作られるので、スーパークラスからイニシャライザーを継承するとしても、固有のイニシャライザーは必ず1つは存在することになる。イニシャライザーは「funnel」ポイントに落ちつく。このファンネルポイントも「漏斗状」というよりは、ファンネルポイントと言った方が格好いいような気がするが、正式な訳語は知らない。
イニシャライザーの繋がり
どのイニシャライザーに落ち着いていくのか、指定イニシャライザーと簡易イニシャライザーの関係性を単純化するために、Swift言語は次の3つのルールを提供している。
ルール1:指定イニシャライザーは、直属のスーパクラスにある指定イニシャライザーを呼ばなければならない。
ルール2:簡易イニシャライザーは、同クラスの他のイニシャライザー(指定、簡易どちれでも)を呼ばなければならない。
ルール3:簡易イニシャライザーは、最終的に指定イニシャライザーを呼ばなければならない。
このルールをふまえ、2段階の初期化ステップが組まれています。
1段階目で、プロパティに保持させる初期値を入れます。
2段階目で、クラスインスタンス生成時に、初期値のカスタマイズ(変更)を加えることができます。
更にセイフティーチェックポイントとして4つの説明が加えられています。
どういうわけかこのイニシャライザーのステップにルールや実行するステップが多い。多いと言うことは非常に重要なパートなんでしょう。
続きは明日にします。