當我通過Swift文檔時,我瞭解到有兩種方法可以在類中「初始化」變量。初始值與默認屬性值
- 通過簡單地聲明默認屬性值:
class Vehicle {
var numberOfWheels = 4
var currentSpeed = 0.0
var description: String {
return "traveling at \(currentSpeed) per hour"
}
func makeNoise() {
print("vroom vroom")
}
}
class Bicycle: Vehicle {
var hasBasket = true
}
- 通過使用init方法
class Vehicle {
var numberOfWheels: Int
var currentSpeed: Double
init(numberOfWheels: Int, currentSpeed: Double) {
self.numberOfWheels = numberOfWheels
self.currentSpeed = currentSpeed
}
var description: String {
return "traveling at \(currentSpeed) per hour"
}
func makeNoise() {
print("vroom vroom")
}
}
class Bicycle: Vehicle {
var hasBasket: Bool
init() {
hasBasket = true
super.init(numberOfWheels: 2, currentSpeed: 10)
}
}
當然這兩個代碼樣本有不同的結果,但總的來說,第一種方法似乎有點乾淨(代碼少)。
爲什麼我會用另一種解決方案,並且您看到任何問題或者解決方案都可以簡化的問題?
小後續問題:在使用'let摩托車=車輛(..'和製作一個新的子類'摩托車:車輛?'之間? –
它只是取決於我遵循的規則是做子類,如果我要去不止一次地使用它,或者它最好是代表它自己的可讀性和代碼組織的對象,但是很多這種風格和偏好都是每個編碼器獨有的,所以,如果我有一個不同的摩托車列表來表示,子類層可能是首選。 –
謝謝伊恩。如果您在第二個代碼示例中看到任何編碼錯誤,請隨時發表評論(仍在學習) –