LoginSignup
0
1

More than 1 year has passed since last update.

【Swift】イニシャライザとは

Posted at

イニシャライザとは

構造体の初期設定を実行するメソッド
自身のプロパティに初期値を設定する
どのような用途で使用されるかというと、
初期値は必ず必要だが、その初期値がインスタンスによって異なるとき。

// 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(){
 }
}
0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1