会社では、Javaを使っているのでSwiftをやり始めてもだいたいわかるだろ~な~
と思ったらいきなり聞いたことない単語が・・・
なんなんだこいつは。と思ったので自分のアウトプットのためにまとめる事にしました。
間違ってること言っていたら教えてください。。
結論
Javaでいう「コンストラクタ」である。(結論になってない。笑)
つまり、クラスのプロパティを初期化する役割を持つ。
形はメソッドだが動くタイミングが違います。
メソッド → 任意のタイミングで呼び出す
イニシャライズ → インスタンス生成時に自動で動く
なんのためにあるのか
しつこいようだけど、"プロパティの初期化"
なぜ、初期化しなければいけないかというところだけど
ざっくりいうと、
プロパティに何かしら代入されていないとインスタンスを生成することができません。
逆説的になるけど、プロパティがすでに初期化済みだった場合はイニシャライズは、書かなくてもいい。
書かなくてもいいだけで、必要です。←??
矛盾してるようですが、説明は最後らへんに書くことにします。
イニシャライザの書き方
いうより書くが易し
下記のように、"init"と書けばそれでいいです。
class Human {
var name:String
var age:Int
init(name:String, age:Int){
self.name = name
self.age = age
}
}
ここで書いているselfは、自分を指してます。
自分というのは、クラスではなく「インスタンス」であることに注意が必要
なお、引数名とプロパティの変数名が同じの場合は、上記のようにselfを書く必要がありますが
違う場合は、self書かなくても自動で判別してくれます。
呼び出し側は、こんな感じ
let user = User(name:"tanaka",age:28)
絶対イニシャライザは必要なのか
最初に書いたこの疑問・・・
その答えはYESであり、NOでもある。
必ず必要なのは間違いないです。
だけどプロパティの初期化が必要ない場合は、コードを書かなくても内部的にSwiftが下記のように補完してくれます。
class Human {
var name:String = "絶対田中"
var age:Int = 28
//↓これ
init(){
}
}
デフォルトイニシャライザと言います
まとめ
誰でも知っているようなことを簡単にまとめました。
自分による、自分のための記事になりましたが
どこかの誰かの参考になれば幸いです。