gpt4 book ai didi

覆盖实例变量的默认值

转载 作者:IT王子 更新时间:2023-10-29 05:29:48 25 4
gpt4 key购买 nike

给定类 Obj,

class Obj: NSObject {
var x = "x"
}

及其子类Obj1,如何更改var x的默认值?

简单地设置一个新值最有意义,但它似乎出错了......

class Obj1: Obj {
var x = "y"
}

❗️ Cannot override with a stored property 'x'

最佳答案

在大多数情况下,通过 init 注入(inject)这些值是首选方式。

例如:

class Foo
{
var x : String

convenience init()
{
self.init(x: "x") // 'x' by default
}

init(x: String)
{
self.x = x
}
}

class Bar : Foo
{
convenience init()
{
self.init(x: "y") // now 'y' by default
}

init(x: String)
{
super.init(x: x)
}
}

但是,在某些情况下,您想要覆盖计算属性或可能未完全初始化的属性。

在这种情况下,您可以使用override var 语法:

override var x : String
{
get { return super.x } // get super.x value
set { super.x = newValue } // set super.x value
}

上面的代码并没有改变行为,而是说明了允许你这样做的语法。

关于覆盖实例变量的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24122913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com