【发布时间】:2018-01-04 21:40:05
【问题描述】:
基本上,Swift 不允许我这样做:
类中不支持的类存储属性您的意思是“静态”吗?
class var hello = "hello"
不过这样也好:
static var hi = "hi"
我知道 Swift 中 Class 和 Static 的区别在于 Class 变量不能存储存储的属性,而 Static 变量可以。但是,类变量和静态变量之间的根本区别在于,静态变量不能在子类中被覆盖,而类变量可以。这是我希望保留的功能。
我知道解决这个问题的一个简单方法是使用这样的 hacky 修复使其成为计算属性:
class var Greeting : String {
return "Greeting"
}
这确实解决了问题,我希望它也能帮助一些在线的人。但是,我想知道是否有人知道为什么 Swift 会这样,并且不允许在类级别变量中存储属性。
【问题讨论】:
-
我正在尝试理解您的问题:您是否担心为什么不能将
class关键字与类型存储属性一起使用,即使static关键字完全符合您的要求?顺便说一句,鉴于您可以在class和struct类型中拥有类型属性,在struct中使用class关键字会不会很奇怪? -
除了它没有完全按照问题描述的那样做,因为如果你有子类,结果会有所不同。而且由于结构不能具有继承性,因此它们不适用于此处。
-
比较 stackoverflow.com/q/45467329/2976878 - 我不认为有任何真正的原因导致这不可能。
标签: swift