Swift默認構造器
默認構造器
Swift 將為所有屬性已提供默認值的且自身冇有定義任何構造器的結構體或基類,提供一個默認的構造器。這個默認構造器將簡單的創建一個所有屬性值都設置為默認值的實例。
下麵例子中創建了一個類ShoppingListItem
,它封裝了購物清單中的某一項的屬性:名字(name
)、數量(quantity
)和購買狀態 purchase state
。
class ShoppingListItem {
var name: String?
var quantity = 1
var purchased = false
}
var item = ShoppingListItem()
由於ShoppingListItem
類中的所有屬性都有默認值,且它是冇有父類的基類,它將自動獲得一個可以為所有屬性設置默認值的默認構造器(儘管代碼中冇有顯式為name
屬性設置默認值,但由於name
是可選字符串類型,它將默認設置為nil
)。上麵例子中使用默認構造器創造了一個ShoppingListItem
類的實例(使用ShoppingListItem()
形式的構造器語法),並將其賦值給變量item
。
結構體的逐一成員構造器
除上麵提到的默認構造器,如果結構體對所有存儲型屬性提供了默認值且自身冇有提供定製的構造器,它們能自動獲得一個逐一成員構造器。
逐一成員構造器是用來初始化結構體新實例裡成員屬性的快捷方法。我們在調用逐一成員構造器時,通過與成員屬性名相同的參數名進行傳值來完成對成員屬性的初始賦值。
下麵例子中定義了一個結構體Size
,它包含兩個屬性width
和height
。Swift 可以根據這兩個屬性的初始賦值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)