在类上定义存储的类型属性

时间:2015-07-15 14:52:33

标签: swift

我是一位斯威夫特的新秀,在阅读#34; The Swift Programming Language"参考书(在语言指南>属性>类型属性):

  

“对于值类型(即结构和枚举),您可以定义存储和计算的类型属性。对于类,您只能定义计算类型属性。“

摘自:Apple Inc.“The Swift Programming Language。”iBooks。 https://itun.es/br/jEUH0.l

但在此之后的几页,可以找到以下代码段:

...
class SomeClass {
    static var storedTypeProperty = "Some value."
    static var computedTypeProperty: Int {
        // return an Int value here
    }
    class var overrideableComputedTypeProperty: Int {
        // return an Int value here
    }
}
...

在类上下文中明确定义存储的类型属性,这显然否定了之前所述的内容。

那么,这是文档错误还是我错过了什么?

修改1

我觉得这不是this question的副本。我没有问为什么没有实现这个功能,因为显然它当前已经实现(因为编译器不会将其识别为错误)。所有我要问的是文件是否过时或我的解释是否正确。

修改2

此问题已得到解决here。显然文档已经过时了。此功能已在Swift 1.2

上添加

1 个答案:

答案 0 :(得分:2)

我相信文档的含义(以一种相当混乱的方式)是您不能拥有class存储的变量(虽然您仍然可以拥有static存储的变量。)

所以,总结一下

class Foo {
  static var bar: Int {      // ok (computed static type variable)
    return 2
  }
  static var foo = ""        // ok (stored static type variable)
  class var foobar: Int {    // ok (computed class type variable)
    return 2
  }
  class var baz = ""         // nope (stored class type variable)
}