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