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つのプロパティが確認できるはずだ。