2017-07-28 80 views
6

基本上,斯威夫特不允许我这样做 -类为什么在类中不支持类存储属性?

//类中存储的属性不支持在类中,你的意思是'静态'。

class var hello = "hello" 

然而,这是好的 -

static var hi = "hi" 

我知道,在斯威夫特类和静态之间的区别是,类变量不能存储存储性能,同时可进行静态变量。然而,Class和Static变量之间的根本区别在于,静态变量不能在子类中重写,而类变量可以。这是我希望保留的功能。

我知道一个简单的解决这个问题是让这个用哈克修复这样的计算性能 -

class var Greeting : String { 
    return "Greeting" 
} 

这确实解决了问题,我希望它可以帮助一些人在网上以及。但是,我想知道是否有人知道为什么Swift以这种方式行为,并且不允许在类级变量中存储属性。

+2

我试图理解你的问题:你是否担心关于为什么你不能在类型存储属性中使用'class'关键字,即使'static'关键字完全符合你的要求?顺便说一句,假设你可以在'class'和'struct'类型中使用类型属性,在'struct'中使用'class'关键字不是很奇怪吗? – Rob

+0

除了它没有精确地描述问题,因为如果你有子类,结果是不同的。由于结构不能有继承,所以在这里不适用。 –

+0

比较https://stackoverflow.com/q/45467329/2976878 - 我不相信有什么真正的原因,为什么这是不可能的。 – Hamish

回答

相关问题