当我通过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摩托车=车辆(..'和制作一个新的子类'摩托车:车辆?'之间? –
它只是取决于我遵循的规则是做子类,如果我要去不止一次地使用它,或者它最好是代表它自己的可读性和代码组织的对象,但是很多这种风格和偏好都是每个编码器独有的,所以,如果我有一个不同的摩托车列表来表示,子类层可能是首选。 –
谢谢伊恩。如果您在第二个代码示例中看到任何编码错误,请随时发表评论(仍在学习) –