假设枚举或结构是静态的,如果它们不在实例中存储任何值。静态枚举和静态结构是否有区别?静态枚举和静态结构之间的差异
enum StaticEnum {
static var someStaticVar = 0
static func someStaticFunc() {}
}
struct StaticStruct {
static var someStaticVar = 0
static func someStaticFunc() {}
}
假设枚举或结构是静态的,如果它们不在实例中存储任何值。静态枚举和静态结构是否有区别?静态枚举和静态结构之间的差异
enum StaticEnum {
static var someStaticVar = 0
static func someStaticFunc() {}
}
struct StaticStruct {
static var someStaticVar = 0
static func someStaticFunc() {}
}
主要的区别在于,你不能构造一个没有案例的枚举。因此,如果您只是在寻找某些用作某些静态成员的名称空间,则首选枚举,因为您无法意外创建实例。
let e = StaticEnum() // error: 'StaticEnum' cannot be constructed because it has no accessible initializers
let s = StaticStruct() // Useless, but legal
完美,谢谢! –
使用'enum'作为名称间距的方式似乎很奇怪。起初我发现它很不清楚。但我不确定这是值得有一个单独的'命名空间'构造,其行为基本上像一个无事例'枚举' – Alexander
@AlexanderMomchliov我当然同意,它感觉有点奇怪使用无案例枚举作为命名空间,它的感觉像更像是一个有用的副作用比预期的功能。尽管实际上需要很少的“只是一个名称空间”(我只能想到stdlib中的一个例子,[MemoryLayout
相关:http://stackoverflow.com/questions/38585344/swift-constants-struct-or-enum。 –