イニシャライザとは
構造体の初期設定を実行するメソッド
自身のプロパティに初期値を設定する
どのような用途で使用されるかというと、
初期値は必ず必要だが、その初期値がインスタンスによって異なるとき。
// Macという構造体で言語、パスワードのイニシャライザを設定
struct Mac{
var language:String
var passcode:String
init(language:String, passcode: String){
self.language = language
self.passcode = passcode
}
}
// languageに"日本語"、passcodeに"password"が
// 設定された状態でインスタンスが作成される
var mac = Mac(language: "日本語", passcode: "password")
イニシャライザの宣言
init(ラベル1 引数名1:型, ラベル2 引数名2:型...){
文
}
メソッドと似ているが、違いは識別子(名前)がないこと。
呼び出し方
構造体を呼び出す際に、イニシャライザの引数を設定する
通常メソッドのように、直接呼び出すことはできず、
インスタンスを作成する際に、間接的に呼び出している。
// 上記例だと、ここでイニシャライザの初期値を設定して、インスタンスを作成している
var mac = Mac(language: "日本語", passcode: "password")
デフォルトイニシャライザ
swiftが自動で生成するイニシャライザ。
以下の場合、生成される
- 構造体のプロパティすべてに初期値が設定されている場合
どういうことかというと、
struct Mac{
var language = "日本語"
var passcode = "password"
}
上記の構造体はすべてのプロパティに初期値が設定されているので、
イニシャライザは必要ないように見える。
しかしこのような場合でも、swift内部ではイニシャライザが必要となる。
ただ、わざわざ私達がイニシャライザを記述しなくてもいいのは、
swiftが自動で補完してくれるから。
それが、デフォルトイニシャライザである。
実際は以下のような処理が内部で行われている。
struct Mac{
var language = "日本語"
var passcode = "password"
// 以下が自動で生成
init(){
}
}