类型属性| 中级Swift
我们有两个问题要考虑是否使用static
类型属性 。
- 将此值与类型本身相关联是否有意义?
- 此属性是否包含提供上下文的信息,而无需实例化实例?
如果此值独立于类型,则可以考虑使用static
类型属性。
例子
在2D地图上,我们使用Point(x, y)
表示位置
结构点{
令x:整数
令y:整数
}
地图上的原点不会将此值与地图类型本身相关联。 它永远不会根据实例而改变。 由于它永远不会改变,因此我们可以将其声明为static
类型属性 。
如果我们希望原点始终为(0, 0)
,则可以使用let 。
结构图{
静态让原点= Point(x:0,y:0)
} print(Map.origin)// Point(x:0,y:0)
否则,如果我们希望原点是可变属性,则可以使用var。
结构图{
静态var原点= Point(x:0,y:0)
} Map.origin = Point(x:1,y:1)
print(Map.origin)// Point(x:1,y:1)
我们可以启动Map实例,但是新实例不能使用static属性 。
另一个失败的例子
失败的原因是,即使通过计算属性,编译器也不允许创建的新实例使用static
来源。 为了解决这个问题,我们可以添加static
使x
处于相同的作用域。
使用静态类型属性的另一种方法。
实际情况是,如果您将类型声明为静态,则它将成为引用类型。
结论
那么什么时候我们要使用static
类型属性呢? 我建议如果要声明全局属性,请使用静态类型属性。 它更有意义,并且更安全地跟踪价值。