2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

イニシャライザの基本

Posted at

#はじめに

.swift
class DataEntity {
  let id: Int
  let name: String
  let age: Int

  init(id: Int, name: String, age: Int){
    self.id = id
    self.name = name
    self.age = age
  }
}

こんなのよく目にしますよね。これは一体何をしてるのかっていうことを簡単に説明します。
気持ち的には、インスタンス毎に固有の値を初期値として持たせたい時に使う感じだと思います。classの雛形に則ってインスタンスを生成し、その中身(プロパティ)の値はイニシャライザで与えます。

.swift
let data1 = DataEntity(id: 1, name: "Taro", age: 20)
let data2 = DataEntity(id: 2, name: "Hanako", age: 20)

こんな感じです。

要すると、イニシャライザとは__インスタンス生成時にプロパティに値を与えるための関数__です(って言って差し支えないと思います)。

こんな流れで解説していきます。

#イニシャライザ
上のサンプルコードで使い方はざっくりわかったと思うので、もう少し細かく見てみましょう。

.swift
init(id: Int, name: String, age: Int){
    self.id = id
    self.name = name
    self.age = age
}

初見だとなんか書き方がよくわからないですね。ですが分かってしまえば大したことはないです。(多分)

selfキーワードは__インスタンスに型の内部からアクセスする時に使います__。
スクリーンショット 2021-05-31 0.36.21.png
なので、やってることは

.swift
self.id = id という式は data.id = 1 ってしてるようなものです

つまり、__インスタンスのプロパティにinitの引数を代入している__ということです。
文字通り初期値を入れて初期化してるわけです。

大分しつこく解説してしまいましたがやってることはシンプルなのです。

終わり

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?