2014年12月29日
Posted by 屋台ブルー at
2014年12月29日00:00 Comment(0)
Swiftで遊ぼう! - 171 - Initializer 3 クラスイニシャライザー
「Swiftで遊ぼう!」シリーズは今年の7月9日からスタートしていて、当初は周りに情報が無かったので正本The Swift Programming Language本だけを頼りに勉強を始めました。
プログラミングのルール本読めばなんとかなると思っていたのですが、数々の抽象的な概念や絡みあうルールを何度読み返しても理解できない日々が続きました。
この5ヶ月間に他のプログラミング本も読み、プログラミングの歴史を知りOOPの発展の過程も知る中で、何度となく、「あっ、そういうことだったんだ」という「気づき」というパラダイムシフトを経験して理解できたことがあります。たぶん、若い人は毎日この「気づき」の進歩をされていることでしょう。しかし、私のようなオヤジ脳ではなかなか、この「気づき」が起こらないんです(T_T)
久しぶりにパラダイムシフトが生じて、すーっと理解できたクラスのイニシャライズに関する話をしましょう。「Swiftで遊ぼう! - 22 クラスの初期化は複雑なステップ」でイニシャライザーの説明の複雑さを不思議がっていました。
このステップが複雑な理由が5ヶ月目にしてやっと分かりました。非常に単純な話なんです。私はプログラミングをしたことが無い人間で、プログラミング素人がOOPの概念を知ってクラスのルールを知ったとしても、クラスから生成されるインスタンスは1種類だけという思い込みをしていました。
どうして1つのインスタンスを生成するのにイニシャライザーが複雑になるのか? 確かに継承という概念があるから複雑なのかなというイメージはあってもそれ以上に考えを及ばせることができなかったんです。
ところが、今回イニシャライザーの復習をしていて、「あっ、色々なインスタンスを生成させるステップなんだ」と気づいたら、後は流れるように理解できました。パラメーター無しでインスタンス作ったり、異なるパラメーターを利用して初期化することも一般的なんだといことが理解できたんです。本にも書いてあったんですが、なぜか今まで頭に入ってこなかったんです(^^;)
プログラミングのルール本読めばなんとかなると思っていたのですが、数々の抽象的な概念や絡みあうルールを何度読み返しても理解できない日々が続きました。
この5ヶ月間に他のプログラミング本も読み、プログラミングの歴史を知りOOPの発展の過程も知る中で、何度となく、「あっ、そういうことだったんだ」という「気づき」というパラダイムシフトを経験して理解できたことがあります。たぶん、若い人は毎日この「気づき」の進歩をされていることでしょう。しかし、私のようなオヤジ脳ではなかなか、この「気づき」が起こらないんです(T_T)
久しぶりにパラダイムシフトが生じて、すーっと理解できたクラスのイニシャライズに関する話をしましょう。「Swiftで遊ぼう! - 22 クラスの初期化は複雑なステップ」でイニシャライザーの説明の複雑さを不思議がっていました。
どういうわけかこのイニシャライザーのステップにルールや決められたステップが多い。多いと言うことは非常に重要なパートなのだろう。続きは明日にしよう。
このステップが複雑な理由が5ヶ月目にしてやっと分かりました。非常に単純な話なんです。私はプログラミングをしたことが無い人間で、プログラミング素人がOOPの概念を知ってクラスのルールを知ったとしても、クラスから生成されるインスタンスは1種類だけという思い込みをしていました。
どうして1つのインスタンスを生成するのにイニシャライザーが複雑になるのか? 確かに継承という概念があるから複雑なのかなというイメージはあってもそれ以上に考えを及ばせることができなかったんです。
ところが、今回イニシャライザーの復習をしていて、「あっ、色々なインスタンスを生成させるステップなんだ」と気づいたら、後は流れるように理解できました。パラメーター無しでインスタンス作ったり、異なるパラメーターを利用して初期化することも一般的なんだといことが理解できたんです。本にも書いてあったんですが、なぜか今まで頭に入ってこなかったんです(^^;)