在Swift结构的常量上使用static的目的是什么?

时间:2018-09-24 15:54:48

标签: swift constants keychain

在学习有关使用钥匙串功能的教程时,我注意到一段代码需要在其中实现以下结构:

// Keychain Configuration
struct KeychainConfiguration {
  static let serviceName = "TouchMeIn"
  static let accessGroup: String? = nil
}

我知道值类型的 constant 属性一旦实例化就无法修改,所以我很好奇在这种意义上使用static的目的吗?


P.S。
这个问题与question不同,因为接受的最高答案(我认为是最佳答案)没有提供足够的详细信息或任何利弊。

1 个答案:

答案 0 :(得分:2)

它具有多种应用程序,包括但不限于以下内容:

1)如果常量具有相同的名称,则给出一个单独的常量命名空间。

struct A {
    static let width: Int = 100
}

struct B {
    static let width: Int = 100
}
print(A.width)
print(B.width)

2)静态常量在设计上是“惰性”的,因此,如果您要使用行为惰性的全局常量,将其放入结构中可能会很方便。

3)为了向您的同事表明常数适用于使用给定结构的特定领域。

4)在以下部分中组织您的配置:Theme.Layout.itemHeightLabel.Font.avenirNext