Swift は、プロパティすべてにデフォルト値があって、かつイニシャライザが 1 つも無い構造体やクラスに、デフォルトイニシャライザを持たせます。デフォルトイニシャライザは単に、プロパティすべてにデフォルト値が設定された新しいインスタンスを生成します。

この例では、ショッピングリストにあるアイテムの名前、数、および購入済みであるかを持つクラス ShoppingListItem を定義しています。

class ShoppingListItem {
    var name: String?
    var quantity = 1
    var purchased = false
}
var item = ShoppingListItem()

ShoppingListItem クラスのすべてのプロパティにデフォルト値があり、スーパークラスが無いベースクラスであるため、ShoppingListItem は自動的に、すべてのプロパティがデフォルト値に設定された新しいインスタンスを生成するデフォルトイニシャライザ実装を得ます。(name プロパティはオプショナル String プロパティなため、コードでは書かれていませんが、自動的にデフォルト値の nil になります。)上の例では、クラスの新しいインスタンスを生成するために、イニシャライザシンタックス ShoppingListItem() と記述して ShoppingListItem クラスのデフォルトイニシャライザを利用し、このインスタンスを変数 item に代入しています。

構造体型のメンバーワイズイニシャライザ

構造体の型にイニシャライザを定義していない場合には、自動的にメンバーワイズイニシャライザができます。デフォルトイニシャライザとは異なり、デフォルト値が無いストアドプロパティがある場合でも、構造体にはメンバーワイズイニシャライザができます。

メンバーワイズイニシャライザは、新しい構造体インスタンスのメンバープロパティを初期化するための簡略方法です。新しいインスタンスのプロパティの初期値を、メンバーワイズイニシャライザに名前で指定して渡すことができます。

下の例では、2 つのプロパティ width と height を持つ構造体 Size を定義しています。両プロパティは、デフォルト値 0.0 が代入されていることから、Double 型と推論されます。

構造体 Size には自動的にメンバーワイズイニシャライザ init(width:height:) ができ、新しい Size インスタンスを初期化するために利用できます。

struct Size {
    var width = 0.0, height = 0.0
}
let twoByTwo = Size(width: 2.0, height: 2.0)

Portions of this page are translations based on work created and shared by Apple and used according to terms described in the Creative Commons Attribution 4.0 International License.