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.