在阅读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
}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)
}
}当然,这两个代码示例有不同的结果,但一般来说,第一种方法似乎更简洁(代码更少)。
为什么我会使用一个而另一个,你看到任何问题或事情,可以简化在这两个解决方案?
发布于 2016-10-09 08:02:46
第二个方法(init)允许您输入变量,这使类更加灵活。例如,如果您希望通过具有不同数量车轮的车辆类实例化各种车辆,则可以传入:
let atv = Vehicle(numberOfWheels: 4, currentSpeed: 20)
let motorcycle = Vehicle(numberOfWheels: 2, currentSpeed: 40)对于您来说,如果值总是相同的,那么默认值要比必须为所有类传递一些常量值要好得多。
另一个选项是实例化,然后在这样做之后更新属性:
let atv = Vehicle()
atv.numberOfWheels = 4但是,出于各种原因,可能希望能够使用参数进行初始化:
对于第一种初始化方法,有时这种格式的代码会更清晰一些,特别是对于viewControllers。
var description: String {
return "traveling at \(currentSpeed) per hour"
}这涉及到计算属性,如果您感兴趣,可以更深入地研究这些属性。希望这能帮上忙。
https://stackoverflow.com/questions/39941192
复制相似问题