Swift中类的存储类型属性

时间:2015-05-14 16:57:49

标签: ios swift

我在SO上看过类似的问题,但实际上没有人能回答这个问题。 “Swift编程语言”一书(v.1.2)说:

  

对于类,您只能定义计算类型属性

然后在下一页上他们有以下示例(为了简洁起见,我删除了一些代码):

class SomeClass {
    static var storedTypeProperty = "Some value."
    // ...
}

即使变量名称也表示它是存储的类型属性(不是计算属性)。

更新:您可以定义类的存储属性,请参阅下面的详细解答。原来这本书没有根据Swift 1.2中的更改进行更新。

2 个答案:

答案 0 :(得分:8)

类中的静态存储属性是使用 Swift 1.2 引入的。 Xcode 6.3 Release Notes下的Swift Language Enhancements列表(重点已添加):

  

static”方法和属性现在允许在类中使用(作为   class final的别名。您现在可以声明静态存储   类中的属性,具有全局存储并且是懒惰的   在第一次访问时初始化(如全局变量)。

示例

class SomeClass {
    static var storedTypeProperty = "Some value."
    // ...
}

是类的静态属性的示例。 声明

  

对于类,您只能定义计算类型属性

不正确,根据此语言更改尚未更新。

答案 1 :(得分:0)

文档似乎与书中的示例和实际代码不一致。这是一个REPL示例:

  1> class Foo { 
  2.     static var _bar = 8 
  3.     static var bar : Int { return _bar } 
  4. } 
  5> Foo.bar
$R0: Int = 8
  6>  

显然已经定义了一个类型属性。