在 Swift 结构中对常量使用 static 的目的是什么?
What is the purpose of using static on a constant in a Swift structure?
在学习使用钥匙串功能的教程时,我注意到一段代码需要实现如下结构:
// Keychain Configuration
struct KeychainConfiguration {
static let serviceName = "TouchMeIn"
static let accessGroup: String? = nil
}
我知道值类型的 constant 属性 一旦实例化就不能修改,所以我很好奇在这个意义上使用 static 的目的是什么?
P.S.
这个问题与这个 不相似,因为最高接受的答案(我认为这是最好的答案)没有提供足够的细节或任何优点或缺点。
它有多种应用,包括但不限于以下:
1) 如果常量同名,给常量一个单独的命名空间。
struct A {
static let width: Int = 100
}
struct B {
static let width: Int = 100
}
print(A.width)
print(B.width)
2) 静态常量是 'lazy' 设计的,因此如果您要使用惰性行为的全局常量,将其放在结构中可能会很方便。
3) 向您的同事表明常量适用于使用给定结构的特定领域。
4) 在以下部分组织您的配置:Theme.Layout.itemHeight
或 Label.Font.avenirNext
在学习使用钥匙串功能的教程时,我注意到一段代码需要实现如下结构:
// Keychain Configuration
struct KeychainConfiguration {
static let serviceName = "TouchMeIn"
static let accessGroup: String? = nil
}
我知道值类型的 constant 属性 一旦实例化就不能修改,所以我很好奇在这个意义上使用 static 的目的是什么?
P.S.
这个问题与这个
它有多种应用,包括但不限于以下:
1) 如果常量同名,给常量一个单独的命名空间。
struct A {
static let width: Int = 100
}
struct B {
static let width: Int = 100
}
print(A.width)
print(B.width)
2) 静态常量是 'lazy' 设计的,因此如果您要使用惰性行为的全局常量,将其放在结构中可能会很方便。
3) 向您的同事表明常量适用于使用给定结构的特定领域。
4) 在以下部分组织您的配置:Theme.Layout.itemHeight
或 Label.Font.avenirNext