Swift存儲型屬性的初始賦值
存儲型屬性的初始賦值
類和結構體在實例創建時,必須為所有存儲型屬性設置合適的初始值。存儲型屬性的值不能處於一個未知的狀態。
你可以在構造器中為存儲型屬性賦初值,也可以在定義屬性時為其設置默認值。以下章節將詳細介紹這兩種方法。
注意:
當你為存儲型屬性設置默認值或者在構造器中為其賦值時,它們的值是被直接設置的,不會觸發任何屬性觀測器(property observers
)。
構造器
構造器在創建某特定類型的新實例時調用。它的最簡形式類似於一個不帶任何參數的實例方法,以關鍵字init
命名。
下麵例子中定義了一個用來保存華氏溫度的結構體Fahrenheit
,它擁有一個Double
類型的存儲型屬性temperature
:
struct Fahrenheit {
var temperature: Double
init() {
temperature = 32.0
}
}
var f = Fahrenheit()
println("The default temperature is \(f.temperature)° Fahrenheit")
// 輸出 "The default temperature is 32.0° Fahrenheit”
這個結構體定義了一個不帶參數的構造器init
,並在裡麵將存儲型屬性temperature
的值初始化為32.0
(華攝氏度下水的冰點)。
默認屬性值
如前所述,你可以在構造器中為存儲型屬性設置初始值;同樣,你也可以在屬性聲明時為其設置默認值。
注意:
如果一個屬性總是使用同一個初始值,可以為其設置一個默認值。無論定義默認值還是在構造器中賦值,最終它們實現的效果是一樣的,隻不過默認值跟屬性構造過程結合的更緊密。使用默認值能讓你的構造器更簡潔、更清晰,且能通過默認值自動推導出屬性的類型;同時,它也能讓你充分利用默認構造器、構造器繼承(後續章節將講到)等特性。
你可以使用更簡單的方式在定義結構體Fahrenheit
時為屬性temperature
設置默認值:
struct Fahrenheit {
var temperature = 32.0
}