Swiftの構造体には、クラスと同じようにインスタンスが生成された際に実行されるイニシャライザ(コンストラクタ)を定義することができる。

イニシャライザの例

以下の例では、二つの引数を受け取るイニシャライザを定義し、イニシャライザ内で3つのプロパティの初期値を設定するものだ。

struct Box {
    let width: Int
    let height: Int
    let size: String
    
    init(width: Int, height: Int) {
        self.width = width
        self.height = height
        
        if(width + height) < 250 {
            size = "M"
        } else {
            size = "L"
        }
    }
}

受け取ったwidthとheightはそのままプロパティに代入し、条件分岐を使用してsizeの初期値を設定している。

インスタンスの作成

先ほど定義したBox構造体を使ってインスタンスを生成してみる。

イニシャライザで定義したとおり、引数にwidthとheightの初期値を渡し、print文でプロパティを確認する。

let box1 = Box(width: 120, height: 80)
let box2 = Box(width: 150, height: 120)

print(box1)
print(box2)

// Box(width: 120, height: 80, size: "M")
// Box(width: 150, height: 120, size: "L")

イニシャライザを介して設定された3つのプロパティが確認できるはずだ。