通过Swift编程语言,我惊讶地发现,与结构和枚举不同,类不支持存储的类型属性.
这是其他OO语言的一个共同特征,所以我认为他们有一个很好的理由决定不允许它.但我无法猜出这是什么原因,特别是因为结构(和枚举)有它们.
难道只是它是Swift的早期时代,它尚未实现吗?或者语言设计决策背后有更深层次的原因吗?
BTW,"存储类型属性"是Swift术语.在其他语言中,这些可能被称为类变量.示例代码:
struct FooStruct {
static var storedTypeProp = "struct stored property is OK"
}
FooStruct.storedTypeProp // evaluates to "struct stored property is OK"
class FooClass {
class var computedClassProp: String { return "computed class property is OK" }
// class var storedClassProp = "class property not OK" // this won't compile
}
FooClass.computedClassProp // evaluates to "computed class property is OK"
Run Code Online (Sandbox Code Playgroud)
编辑:
我现在意识到这种限制很容易解决,例如,通过使用具有存储属性的嵌套结构:
class Foo {
struct Stored {
static var prop1 = "a stored prop"
} …Run Code Online (Sandbox Code Playgroud)