假設枚舉或結構是靜態的,如果它們不在實例中存儲任何值。靜態枚舉和靜態結構是否有區別?靜態枚舉和靜態結構之間的差異
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。 –