什么"静态"在枚举或结构中表示常量

时间:2015-07-14 07:15:24

标签: swift struct enums constants

我最近遇到了以下情况:

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

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

并想知道static意味着什么。据我所知let已经暗示了不可变性,然后由enum / struct的所有实例共享。听起来这是微观管理内存消耗,但我不确定我是否错过了这里的基本观点。

1 个答案:

答案 0 :(得分:3)

这意味着myVariabletype 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声明的静态变量,这是将不可诊断的错误和崩溃引入程序的好方法。