Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Swift 类类型属性不应具有static关键字?_Swift_Class_Types_Properties_Static - Fatal编程技术网

Swift 类类型属性不应具有static关键字?

Swift 类类型属性不应具有static关键字?,swift,class,types,properties,static,Swift,Class,Types,Properties,Static,这是苹果文档示例中的一张图片,为什么前两个属性有“static”关键字??我认为静态应该只用于结构和枚举 其次,为什么这个类有一个存储类型属性?我以为类只能有计算类型属性 生效于Swift 1.2,现在允许在类中使用静态属性 类始终被允许具有存储属性 从以下目录中: 静态方法和属性现在允许在类中作为 期末考试的别名 现在允许您在类中声明静态存储属性,这些类具有全局存储,并且是惰性的 与全局变量一样,在第一次访问时初始化 但是使用static而不是class关键字有什么区别呢?正如上面的引文所说:

这是苹果文档示例中的一张图片,为什么前两个属性有“static”关键字??我认为静态应该只用于结构和枚举

其次,为什么这个类有一个存储类型属性?我以为类只能有计算类型属性

生效于Swift 1.2,现在允许在类中使用静态属性

类始终被允许具有存储属性

从以下目录中:

静态方法和属性现在允许在类中作为 期末考试的别名

现在允许您在类中声明静态存储属性,这些类具有全局存储,并且是惰性的 与全局变量一样,在第一次访问时初始化


但是使用static而不是class关键字有什么区别呢?正如上面的引文所说:在类的上下文中使用static是class final的别名。final表示无法重写属性/方法。您可能对以下内容感兴趣。但是在声明类类型属性/方法时使用“static”或“class”关键字有什么区别?这就是语言的设计方式:Swift编程语言说:您使用static关键字定义类型属性。对于类类型的计算类型属性,可以改用class关键字来允许子类重写超类的实现。如果试图定义类存储属性,则会收到一条错误消息,提示该语言尚不支持类存储属性:类中尚不支持类存储属性;你的意思是“static”吗?是的,我的意思是“static”,我可以对类中的所有类型方法和类型属性使用“static”关键字吗?你可以,但是如果你希望子类能够重写类型方法,你应该使用class而不是static。但是,在减少动态调度方面存在一个问题。