我最近遇到了以下情况:
enum MyEnum {
static let myVariable = "some value"
}
struct MyStruct {
static let myVariable = "some value"
}
并想知道static
意味着什么。据我所知let
已经暗示了不可变性,然后由enum
/ struct
的所有实例共享。听起来这是微观管理内存消耗,但我不确定我是否错过了这里的基本观点。
答案 0 :(得分:3)
这意味着myVariable
是type property - 该类型的所有实例都可以使用的单个属性。本质上是与MyEnum
相关联的全局变量。
对于用let
声明的常量,这是一种声明常量范围的常量的方法,即在该类型的每个实例中不占用空间的类型,即:
struct MySlimStruct {
static let myVariable = "some value"
}
sizeof(MySlimStruct) // returns 0
struct MyFatStruct {
let myVariable = "some value"
}
sizeof(MyFatStruct) // returns 24
对于使用var
声明的静态变量,这是将不可诊断的错误和崩溃引入程序的好方法。