"static" 对枚举或结构中的常量意味着什么

What does "static" imply on constant within an enum or struct

我最近遇到了以下情况:

enum MyEnum {
  static let myVariable = "some value"
}

struct MyStruct {
  static let myVariable = "some value"
}

并想知道 static 意味着什么。根据我的理解,let 已经暗示了 enum/struct 的所有实例共享的不变性。在我看来,这是对内存消耗进行微观管理,但我不确定我是否遗漏了这里的基本要点。

这意味着 myVariable 是一个 type property – 该类型的所有实例都可以使用的单个 属性。本质上是与 MyEnum.

关联的全局变量

对于使用 let 声明的常量,这是一种声明常量的方法,这些常量的范围限定为在该类型的每个实例中不占用 space 的类型,即:

struct MySlimStruct {
    static let myVariable = "some value"
}

sizeof(MySlimStruct)  // returns 0

struct MyFatStruct {
    let myVariable = "some value"
}

sizeof(MyFatStruct)  // returns 24

对于使用 var 声明的静态变量,这是将无法诊断的错误和崩溃引入程序的好方法。