最佳答案
我注意到编译器不允许我用另一个存储值覆盖一个存储属性(这看起来很奇怪) :
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
override var lightSaberColor = "Red" // Cannot override with a stored property lightSaberColor
}
但是,我可以使用一个计算属性执行此操作:
class Jedi {
let lightSaberColor = "Blue"
}
class Sith: Jedi {
override var lightSaberColor : String{return "Red"}
}
为什么我不能给它另一个值?
为什么用一个存储属性重写是一件令人厌恶的事情,而用一个经过计算的洁净值来做这件事情?他们在想什么?