この世でいちばんわかりやすいiPhoneアプリ開発のおはなし【イニシャライザとは】
構造体について知っておくと、このページの理解が深まります。構造体については、こちらのページで解説しています。
インスタンスを作成する
一般的に、惑星の名前や直径は経過的に変化するものではありません。 したがって、惑星をモデル化する構造体において、それらのプロパティを変数として定義することは不自然です。 インスタンス作成時にプロパティの値を設定し、それ以降は値を変更できないようにすべきです。
そのためには、プロパティを定数として宣言し、既定値を設定しないようにします。
struct Planet {
let name: String
let diameter: Double
}
プロパティに既定値を設定しない場合、型アノテーションでプロパティの型を明示する必要があります。 上例のPlanet型のように構造体のプロパティに定義されている場合、適切なイニシャライザが自動的に提供されます。
それでは、地球を示す惑星インスタンスを作成しましょう。 イニシャライザには、地球の名前と直径を示す値として"Earth"と12756を渡します。
let earth = Planet(name: "Earth", diameter: 12756)
earth.name // "Earth"
earth.diameter // 12756
上のコードで呼び出したイニシャライザには、パラメータが追加されています。 そのおかげで、インスタンスに備わっているすべてのプロパティに値を設定することができました。
この「自動的にパラメータが追加されるイニシャライザ」を特に、メンバーワイズ・イニシャライザ といいます。 対照的に、「パラメータがひとつもないイニシャライザ」を デフォルト・イニシャライザ といいます。
イニシャライザは、型に定義したプロパティに既定値を設定するための特殊なメソッドです。 つまり、インスタンスを作成するには、備わっているすべてのプロパティに既定値を設定する必要があるということです。 インスタンスを作成するために、プロパティに既定値を設定することを 初期化 といいます。
Int型やString型は、Swiftの標準的なデータ型として定義された構造体のひとつです。 これらのデータ型も、デフォルト・イニシャライザを呼び出してインスタンスを作成することができます。
let zero = Int() // 0
let empty = String() // ""
上のコードは、Int型のデフォルト・イニシャライザは整数の0を作成し、String型のそれは「空の文字列」を作成することを示します。
標準のデータ型には他にも様々なイニシャライザが予め、定義されています。 用途に応じて適切なイニシャライザを呼び出せるようになると、プログラミングスキルが向上します。