【问题标题】:Using static let in enum instead of case在枚举中使用静态 let 而不是大小写
【发布时间】:2018-12-22 17:07:44
【问题描述】:

我注意到在枚举内部的某些情况下,人们使用 static let 来声明变量,而不是 case。这种做法合理吗?

public enum ExampleEnum {
    static let case1 = "case1"
    static let case2 = "case2"
    static let case3 = "case3"
}

【问题讨论】:

  • 因为你不能在没有 case 的情况下实例化一个枚举,所以枚举通常被用作命名空间。
  • 您可能会发现这个summary 有助于理解@HAS 的观点。这样的代码虽然可能存在问题,但也可用于支持 Objective-C 互操作。

标签: ios swift enums


【解决方案1】:

这是为常量创建命名空间的快捷方式。

你当然可以使用结构体达到类似的效果,但是运行let foo = StructOnlyForStoringConstants() 不会抛出错误甚至警告(可以使用private init 甚至记录警告来解决,但我们很快就会失去quick在上面的a quick way 中),因此可能会令人困惑(some argue)。由于无法实例化没有大小写(或“no-case enums”)的枚举,因此您不存在此问题。

另一个原因是,将常量放在枚举中可能感觉更自然(比在结构中说),因为枚举用于存储一组相关值。

【讨论】:

    猜你喜欢
    • 2017-03-02
    • 1970-01-01
    • 2023-01-18
    • 2021-08-16
    • 2015-10-27
    • 2014-06-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多