Swift 在类上定义存储的类型属性
我是Swift新手,在阅读“Swift编程语言”参考书(关于语言指南>属性>类型属性)中的这一段时,我感到困惑: 对于值类型(即结构和枚举),可以定义存储的和计算的类型属性。对于类,只能定义计算的类型属性 摘自:苹果公司《Swift编程语言》。iBooks 但在此之后的几页中,可以找到以下代码片段:Swift 在类上定义存储的类型属性,swift,Swift,我是Swift新手,在阅读“Swift编程语言”参考书(关于语言指南>属性>类型属性)中的这一段时,我感到困惑: 对于值类型(即结构和枚举),可以定义存储的和计算的类型属性。对于类,只能定义计算的类型属性 摘自:苹果公司《Swift编程语言》。iBooks 但在此之后的几页中,可以找到以下代码片段: ... class SomeClass { static var storedTypeProperty = "Some value." static var computedType
...
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
我觉得这不是我的复制品。我不是在问为什么没有实现这个功能,因为显然它目前已经实现了(因为编译器不会将它标识为错误)。我要问的是文档是否过时或者我的解释是否不正确
编辑2
这一问题得到了解决。显然文件已经过时了。这个功能是在Swift 1.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)
}
我认为苹果没有更新这本书。如果我错了,请纠正我。我是个古玩,自己检查了一下。这段代码运行得很好:
类测试{static var someInt=0}打印(Test.someInt)
我不确定我是否正确理解了您的问题。这就是你要找的吗?@GabrielHuff:你解释了为什么你认为它不是复制品。但是,除非我误解了你的问题(上次编辑之后),否则这是重复的。好吧,你是对的。第二个问题涉及同样的问题。显然,文档已经过时。类型属性语法的最后一段让我得出了相同的结论。静态
只是类最终
的隐式类型别名,但这在这里不起作用。在这里阅读:这是有道理的。但我认为这更可能是一个错误,因为静态
和类
的概念仅在下一页介绍。另外,通过阅读这个问题(人们认为我重复了这个问题),我假设在早期版本中,不可能在类中声明存储的类型变量