我是一位斯威夫特的新秀,在阅读#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
上添加答案 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)
}