gpt4 book ai didi

swift - 关于在 Swift 中重写类属性的困惑

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

我已经阅读了 Swift 文档并在此处进行了搜索,但我仍然不确定如何实现类层次结构,其中每个子类都为继承的静态属性设置自定义值;即:

  1. 基类定义了一个静态属性:所有实例共享相同的值。
  2. 子类覆盖静态属性:所有实例共享相同的值,与基类的值不同。

属性是否可以存储?

另外,我应该如何从实例方法中访问属性的值(不管特定的类),并每次都获得正确的值?以下代码会起作用吗?

class BaseClass 
{
// To be overridden by subclasses:
static var myStaticProperty = "Hello"

func useTheStaticProperty()
{
// Should yield the value of the overridden property
// when executed on instances of a subclass:
let propertyValue = self.dynamicType.myStaticProperty

// (do something with the value)
}

最佳答案

除了不能重写子类中的 static 属性外,您几乎就在那里 — 这就是 static 的含义。所以你必须使用 class 属性,这意味着它必须是一个计算属性——Swift 缺少存储的 class 属性。

所以:

class ClassA {
class var thing : String {return "A"}
func doYourThing() {
print(type(of:self).thing)
}
}
class ClassB : ClassA {
override class var thing : String {return "B"}
}

让我们测试一下:

ClassA().doYourThing() // A
ClassB().doYourThing() // B

关于swift - 关于在 Swift 中重写类属性的困惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35665747/

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