【问题标题】:What does "static" imply on constant within an enum or struct“静态”对枚举或结构中的常量意味着什么
【发布时间】:2015-10-02 16:52:30
【问题描述】:

我最近遇到了以下情况:

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

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

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

【问题讨论】:

    标签: swift struct enums constants


    【解决方案1】:

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

    【讨论】:

    • 原来是内存管理?!是否有 MyFatStruct 的用例而不是 MySlimStruct
    • 是的,如果您希望每个实例都有自己的 myVariable
    • @Airspeed Velocity,你认为你可以扩展你的最后评论吗?
    猜你喜欢
    • 2016-12-18
    • 2022-01-06
    • 1970-01-01
    • 2023-04-02
    • 1970-01-01
    • 2016-11-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-25
    相关资源
    最近更新 更多