当前位置 : 主页 > 手机开发 > 其它 >

继承 – Swift使用实例变量计算Swift中的属性?

来源:互联网 收集:自由互联 发布时间:2021-06-19
我正在尝试在 Swift中创建一个计算属性,我需要一个实例变量来保存属性的状态. 当我试图覆盖我的超类中的属性时,会发生这种情况: class Jedi { var lightSaberColor = "Blue"}class Sith: Jedi { var
我正在尝试在 Swift中创建一个计算属性,我需要一个实例变量来保存属性的状态.

当我试图覆盖我的超类中的属性时,会发生这种情况:

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处理程序存储属性可能就足够了.

网友评论