我注意到编译器不允许我用另一个存储值重写存储属性(这似乎很奇怪):
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
override var lightSaberColor = "Red" // Cannot override with a stored property lightSaberColor
}
但是,我可以使用计算(computed)属性执行此操作:
class Jedi {
let lightSaberColor = "Blue"
}
class Sith: Jedi {
override var lightSaberColor : String{return "Red"}
}
为什么我不能赋予它另一个价值?
为什么用存储的财产进行覆盖是一种可憎的行为,而用计算出的犹太洁食呢?他们在想什么?