cfi*_*her 4 inheritance overriding properties ivar swift
我正在尝试在Swift中创建一个计算属性,我需要一个实例变量来保存属性的状态.
当我试图覆盖我的超类中的属性时,会发生这种情况:
class Jedi {
var lightSaberColor = "Blue"
}
class Sith: Jedi {
var _color = "Red"
override var lightSaberColor : String{
get{
return _color
}
set{
_color = newValue
}
}
}
Run Code Online (Sandbox Code Playgroud)
我用jedi覆盖了存储属性lightSaberColor的计算属性,因为这是编译器允许的唯一方法.它还迫使我创建一个getter和setter(这很有意义).那就是我遇到麻烦的时候.
到目前为止,我发现的唯一方法是定义这个额外和丑陋的var _color.你是一个更优雅的解决方案吗?
我尝试_color在属性块内部进行定义,但它不会编译.
必须有更好的方法!
你拥有它的方式是它现在可以工作的唯一方式 - 我要做的唯一改变是声明_color为private.
根据您的需要,使用willGet和/或didSet处理程序存储属性可能就足够了.