让我们说我有以下课程:
class car {
var brand = ["BWM", "Ford", "Audi","Toyota"
var color = ["Red", "Blue", "White", "Black"
var speed = Double()
var weight = Double()
}
我有一个UITableView,允许用户添加一行,并根据品牌选择一辆新车。
现在让我们说所有宝马都是红色的,所以颜色设置为红色。 我想我可以通过添加:
来实现这一目标Init(){
If brand == "BMW"{
color = "red"}
但我也希望为其他品牌设置默认值,这似乎是很长的做事方式。有更简单的方法吗?
答案 0 :(得分:0)
您还可以声明一个新类BMW,它是汽车的子类,并在init方法中将颜色设置为红色。
答案 1 :(得分:0)
我认为你应该重新评估你的课程。单个车没有多个品牌,因此您的brand
属性应该是枚举,就像您的颜色一样。
一旦定义了Car类,那么BMW就是Car
的子类,您可以在其中覆盖初始化行为:
enum CarBrand {
case BMW
case Ford
case Audi
case Toyota
}
enum CarColor {
case Red
case Blue
case White
case Black
}
class Car {
var brand: CarBrand
var color: CarColor
var weight: Double
var maxSpeed: Double
init(brand: CarBrand, color: CarColor, weight: Double, maxSpeed: Double) {
self.brand = brand
self.color = color
self.weight = weight
self.maxSpeed = maxSpeed
}
}
class BMWCar : Car {
init(weight: Double, maxSpeed: Double) {
super.init(brand: .BMW, color: .Red, weight: weight, maxSpeed: maxSpeed)
}
let aCar = Car(brand: .Audi, color: .Blue, weight: 1760, maxSpeed: 200)
let aBMWCar = BMWCar(weight: 1800, maxSpeed: 220)
严格来说Car
应该是一个抽象类,但Swift不直接支持。